我要替换此测试代码:
expect(events.length).toEqual(2);
expect(events[0].item).toEqual("A");
expect(events[0].newIndex).toEqual(0);
expect(events[0].type).toEqual(CollectionChangeType.Insert);
expect(events[1].item).toEqual("D");
expect(events[1].oldIndex).toEqual(2);
expect(events[1].type).toEqual(CollectionChangeType.Remove);
...格式较短(在我的情况下实际上更完整)...
expect(events).toEqual([
CollectionChange.insert("A", "A", 0),
CollectionChange.remove("D", "D", 2)
]);
但是,如果出现错误,则输出将很难读取。
预期的[{类型:0,项目:“ A”,itemId:“ A”,newIndex:0,oldIndex:-1},{类型:2,项目:“ D”,itemId:“ D”,newIndex:-1 ,oldIndex:3}]等于[{type:0,item:'A',itemId:'A',newIndex:0,oldIndex:-1},{type:2,item:'D',itemId:' D',newIndex:-1,oldIndex:2}]。
有没有办法自定义此输出?例如,我会满意:
Array items differ at indices:
[1] expected { type: 2, item: 'D', itemId: 'D', newIndex: -1, oldIndex: 3 }
but saw { type: 2, item: 'D', itemId: 'D', newIndex: -1, oldIndex: 2 }
如果进行数组比较,可以修改逻辑吗?
最佳答案
您可以创建自己的茉莉花匹配器,并显示更详细的信息。 See this link for details
我在茉莉花1.3中制作了一个简单的版本,可以帮助您入门。
describe("example", function ()
{
beforeEach(function ()
{
this.addMatchers({
arrayComparison: function (expected)
{
var actual = this.actual;
this.message = function() { return "Array items differ at indices:\n\n[1] expected " + expected + "\n but saw " + actual; }
return this.actual == expected;
}
});
});
it("should compare arrays", function ()
{
var array1 = { type: 2, item: 'D', itemId: 'D', newIndex: -1, oldIndex: 3 };
var array2 = { type: 2, item: 'D', itemId: 'D', newIndex: -1, oldIndex: 2 };
expect(array1).arrayComparison(array2);
});
});
关于javascript - 改善Jasmine测试输出以进行阵列比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25621733/