使用XamDataGrid和Sorting事件进行单元测试

本文关键字:单元测试 事件 Sorting XamDataGrid 使用 | 更新日期: 2023-09-27 17:57:41

我正在尝试对一个类进行单元测试,该类使用XamDataGrid

我的问题是,我的代码应该触发XamDataGrid中的SortedSorting事件,但它没有:我缺少什么?

以下是我如何创建网格:

public static class XamDataGridObjectMother
{
    public static XamDataGrid CreateGrid(params string[] columns)
    {
        var grid = new XamDataGrid();
        var layout = new FieldLayout();
        grid.FieldLayouts.Add(layout);
        int i = 0;
        foreach (var column in columns)
        {
            var field = new Field(column, typeof(string), column+" Label");
            field.Column = i;
            field.Width = new FieldLength(100);
            field.Name = column;
            layout.Fields.Add(field);
            i++;
        }
        var data = new List<XamDataGridFakeItem>();
        data.Add(new XamDataGridFakeItem("P1", "A1"));
        data.Add(new XamDataGridFakeItem("P2", "A1"));
        data.Add(new XamDataGridFakeItem("P3", "A1"));
        data.Add(new XamDataGridFakeItem("P4", "A2"));
        data.Add(new XamDataGridFakeItem("P5", "A2"));
        data.Add(new XamDataGridFakeItem("P6", "A2"));
        foreach (var xamDataGridFakeItem in data)
        {
            grid.DataItems.Add(xamDataGridFakeItem);
        }
        return grid;
    }
    public class XamDataGridFakeItem
    {
        public XamDataGridFakeItem(string portfolio, string area)
        {
            Portfolio = portfolio;
            Area = area;
        }
        public string Portfolio { get; set; }
        public string Area { get; set; }
    }
}

这是我的单元测试的一部分,我用编程的方式将排序添加到网格中,并且它应该引发Sorted/sorting事件(可能两者都有):

 var sortDescription = new FieldSortDescription("Portfolio", ListSortDirection.Descending, false);
 _dataGrid.FieldLayouts[0].SortedFields.Add(sortDescription); // That should trigger the event(s)!

当然,_dataGrid是用上面显示的对象母类在其他地方初始化的。

因此,如果这还不明显的话,我的问题是,我添加了一个排序字段应该触发一个排序/排序事件(它应该对网格进行排序),但它没有,而且我找不到任何方法(通过编程)强制它对网格排序并触发这些事件。

我错过了什么?

使用XamDataGrid和Sorting事件进行单元测试

Sorting和Sorted事件仅在响应用户交互时触发,因此在对代码中的网格进行排序时不会触发。

如果您需要查看在网格中对哪些字段进行排序,可以查看相关的FieldLayout.SortedFields集合以查看对哪些字段排序。

请注意,如果您的测试是为了验证排序是否成功,那么最好检查网格中记录的顺序,而不是检查要激发的事件。