我要替换此测试代码:

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/

10-10 23:13