我想验证 Jasmine 间谍是否使用特定对象调用this
. 我怎样才能做到这一点?
一个人为的例子:
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'?
我为这个问题创造了一个小提琴。
我想验证 Jasmine 间谍是否使用特定对象调用this
. 我怎样才能做到这一点?
一个人为的例子:
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'?
我为这个问题创造了一个小提琴。
虽然我找不到有关此功能的任何文档(抱歉,如果我遗漏了某些内容),但this
每次调用间谍时都会记录 的值。
var spy = jasmine.createSpy('method');
var obj = {
property: 'value'
};
spy.apply(obj);
expect(spy.mostRecentCall.object).toEqual(obj);
请参阅此小提琴以进行演示。
我在进行测试时遇到了这样的问题,所以我决定编写自定义间谍匹配器:https ://www.npmjs.com/package/jasmine-spy-matchers
使用它们,您可以访问新的匹配器:
expect(spy).toHaveBeenCalledWithContext(obj)
//or
expect(spy).toHaveBeenCalledWithContext(obj, 'foo', 'bar')
它的工作方式与 toHaveBeenCalledWith 相同,但也可以context
验证