2

我想验证 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'?​​​​​​​​

我为这个问题创造了一个小提琴

4

2 回答 2

2

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

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

请参阅此小提琴以进行演示。

于 2013-01-04T17:36:10.220 回答
0

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

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

expect(spy).toHaveBeenCalledWithContext(obj)

//or

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

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

于 2017-11-30T20:35:01.950 回答