2

我有一个测试,我期待一个对象数组。以下预期条件工作正常。但是每天由于被测系统的行为,我们需要更改预期的数据对象数组。所以我的问题是,如何在不期望确切值的情况下期望这些类型的对象数组的模式?或者有没有其他好的方法来处理这个?

    it('Verify the functionality of displaying correct data in Status grid table', function() {
        expect(HomePage.getStatusGrid()).toEqual([ 
            { make : 'Make1',   model : 'Model1',   totLoads : '17.24', washDays : 'Wednesday', timeDay : '10:00-11:00' },
            { make : 'Make1',   model : 'Model2',   totLoads : '15.58', washDays : 'Wednesday', timeDay : '16:00-17:00' },
            { make : 'Make1',   model : 'Model3',   totLoads : '17.17', washDays : 'Monday',    timeDay : '18:00-19:00' },
            { make : 'Make2',   model : 'Model4',   totLoads : '16.27', washDays : 'Monday',    timeDay : '19:00-20:00' },
            { make : 'Make2',   model : 'Model5',   totLoads : '16.19', washDays : 'Thursday',  timeDay : '19:00-20:00' },
            { make : 'Make2',   model : 'Model6',   totLoads : '15.01', washDays : 'Friday',    timeDay : '10:00-11:00' },
            { make : 'Make3',   model : 'Model7',   totLoads : '16.94', washDays : 'Tuesday',   timeDay : '11:00-12:00' },
            { make : 'Make3',   model : 'Model8',   totLoads : '15.72', washDays : 'Thursday',  timeDay : '10:00-11:00' },
            { make : 'Make3',   model : 'Model9',   totLoads : '15.90', washDays : 'Saturday',  timeDay : '16:00-17:00' }
        ]);
    });
4

2 回答 2

1

我想你可以在 Jasmine 中编写一个自定义匹配器来为你做模式检查,而不是完整的数据匹配

一些链接可以帮助您开始。

使用自定义匹配器的 jasmine 2.0 测试失败:未定义不是函数

http://jasmine.github.io/2.0/custom_matcher.html

于 2016-09-30T10:46:03.647 回答
1

拥有自定义匹配器可能有助于隐藏匹配检查的复杂性并实现可重用性。

不过,一种直接的方法来遍历网格中的行并应用toMatch()匹配器就足够了:

var grid = [      
  { make : 'Make1',   model : 'Model1',   totLoads : '17.24', washDays : 'Wednesday', timeDay : '10:00-11:00' },
  { make : 'Invalid make',   model : 'Model1',   totLoads : '17.24', washDays : 'Wednesday', timeDay : '10:00-11:00' },    
];
grid.forEach(function (row) {
    expect(row.make).toMatch(/Make\d+/);
    expect(row.model).toMatch(/Model\d+/);
    // TODO: more checks
}); 

请注意,如果HomePage.getStatusGrid()返回一个 Promise,则需要显式解析它:

HomePage.getStatusGrid().then(function (grid) {
    grid.forEach(function (row) {
        expect(row.make).toMatch(/Make\d+/);
        expect(row.model).toMatch(/Model\d+/);
        // TODO: more checks
    }); 
});
于 2016-09-30T13:51:13.007 回答