我为Jasmine 2.x创建了一些自定义匹配器,我想为其创建规格。 大多数程序员只是在测试中应用它们来测试他们的匹配器,验证输出代码是否为正。
例如.toEqual
'自定义'匹配器:
it('should test if two objects are equal', function () {
expect({}).toEqual({}); // Passing
});
但是,我想测试匹配器的失败情况,我想测试匹配器失败时产生的消息,例如以这种方式。
// Jasmine 2.x
it('should test if two objects are equal', function () {
expect(matcher.compare(1, 1)).toEqual({
pass: true,
message: 'Expected 1 not to equal 1' // Message is for when you use .not with the matcher
});
expect(matcher.compare(1, 2)).toEqual({
pass: false,
message: 'Expected 1 to equal 2'
});
});
代码示例中的变量matcher
是我使用jasmine.addMatchers({ toEqual: matcher })
添加的匹配器函数。
由于我不想对全球空间进行调查,因此我不知道如何在我的规范中提供匹配器。默认的jasmine匹配器位于jasmine.matchers
中,并通过某个$j
对象添加到their spec。
所以主要的问题是:当我将它们添加到Jasmine时,我的自定义匹配器存储在哪里?我可以为规格检索它们还是隐藏在闭包中?
似乎addMatchers
正在调用env.addMatchers
,这会将匹配器推送到runnableResources[currentRunnable().id].customMatchers
。 RunnableResources是一个闭包......