在jasmine自定义匹配器中使用来自现有toEQual的消息

时间:2017-02-27 08:17:16

标签: jasmine jasmine2.0

我正在使用Jasmine 2.5.3并且正在编写一个首先处理输入的customMatcher;创建一个数组,然后根据预期值检查该数组。

我已经能够编写匹配器并使其正常工作。但是,在尝试使用toEqual比较Jasmine中的两个数组时,我非常喜欢输出,并且我希望返回与输出的message属性相同的消息。这怎么可能?我已阅读文档,但我没有看到任何有关重用错误消息的信息。当我阅读源代码时,我确实看到了对diffBuilder.getMessage()的引用,但我没有看到任何关于使用它的注释。

详细说明,这是我的匹配器的伪代码:

return {
    compare: function(input, expected) {
        var actual = foo(input); //actual is an array
        return {
            pass: actual === expected,
            message: //same as failure of: expect([1]).toEqual([3])
        };
    }
}

补充说明/澄清:

  • 我不能将foo放在一个模块中,因为它只是测试模块的帮手,我想尽可能保留自定义匹配器
  • 我看到另一篇文章将从茉莉花环境访问toEqualjasmine.matchers.toEqual,但我无法获取有关收到错误消息的任何信息

1 个答案:

答案 0 :(得分:0)

事实证明我可以做到:

return {
    compare: function(input, expected) {
        var actual = foo(input);
        return (expect(actual).toEqual(expected))
    }
}