量角器/Jasmine 期望对象数组作为模式
Protractor / Jasmine expect object array as pattern
我进行了一项测试,我希望得到一组对象。下面的期望条件工作正常。但是由于被测系统的行为,我们每天都需要更改预期的数据对象数组。
所以我的问题是,如何在不期望确切值的情况下期望这些类型的对象数组的模式?或者还有其他好的方法来处理这个问题吗?
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' }
]);
});
我想你可以在 Jasmine 中写一个 custom matcher 来为你做模式检查而不是完整的数据匹配
一些帮助您开始的链接。
jasmine 2.0 test with a custom matcher fails: undefined is not a function
custom matcher 可能有助于隐藏匹配检查的复杂性并实现可重用性。
不过,在网格中遍历行并应用 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()
returns 一个 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
});
});
我进行了一项测试,我希望得到一组对象。下面的期望条件工作正常。但是由于被测系统的行为,我们每天都需要更改预期的数据对象数组。 所以我的问题是,如何在不期望确切值的情况下期望这些类型的对象数组的模式?或者还有其他好的方法来处理这个问题吗?
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' }
]);
});
我想你可以在 Jasmine 中写一个 custom matcher 来为你做模式检查而不是完整的数据匹配
一些帮助您开始的链接。
jasmine 2.0 test with a custom matcher fails: undefined is not a function
custom matcher 可能有助于隐藏匹配检查的复杂性并实现可重用性。
不过,在网格中遍历行并应用 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()
returns 一个 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
});
});