2017-02-27 53 views
0

我正在使用Jasmine 2.5.3,并且正在编写一个首先处理输入的customMatcher;创建一个数组,然后根据期望值检查该数组。在jasmine自定义匹配器中使用来自现有的toEQual的消息

我已经能够编写匹配器并使其工作。然而,当我尝试使用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一个模块中,因为它仅仅是为了测试一个帮手模块,我想尽可能保留在自定义匹配器中
  • 我看到了另一篇文章,它将从茉莉花环境访问toEqual,如下所示:jasmine.matchers.toEqual,但我无法获得有关收到错误消息

回答

0

原来我可以做的任何信息:

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

你怎么能这样做呢?比较函数必须返回一个具有两个属性的对象:pass和message。如果你这样做,你在这里显示的内容,你会得到一个错误“TypeError:不能读取未定义的属性'传递',因为toEqual匹配器返回udefined。这是在茉莉花2.8.0 – user907860