如何用Jasmine间谍检查'this'的值?

时间:2013-01-04 17:28:33

标签: javascript testing mocking jasmine

我想验证是否使用this的某个对象调用了Jasmine间谍。我怎么能这样做?

一个人为的例子:

var spy = jasmine.createSpy('method');
var obj = {property: 'value'};
spy.apply(obj);
// How can we verify that 'this' in the call to spy is 'obj'?​​​​​​​​

我为此问题创建了fiddle

2 个答案:

答案 0 :(得分:2)

虽然我找不到关于此功能的任何文档(对不起,如果我遗漏了某些内容),每次调用间谍时都会记录this的值。

var spy = jasmine.createSpy('method');
var obj = {
    property: 'value'
};
spy.apply(obj);
expect(spy.mostRecentCall.object).toEqual(obj);

请参阅this fiddle了解演示。

答案 1 :(得分:0)

我在测试时遇到了这样的问题,所以我决定编写自定义间谍匹配器:https://www.npmjs.com/package/jasmine-spy-matchers

使用它们可以访问新的匹配器:



expect(spy).toHaveBeenCalledWithContext(obj)

//or

expect(spy).toHaveBeenCalledWithContext(obj, 'foo', 'bar')




它的工作方式与toHaveBeenCalledWith相同,但也可以验证context