我在方法上安装了一个茉莉花间谍,就像
一样if(typeof method === 'function'){
var context = {a:'b'};
method.call(context);
}
这样当调用方法时,其中的this
关键字将是上下文。如何使用Jasmine测试间谍的上下文?
答案 0 :(得分:1)
调用上下文位于每个调用对象的object
属性中。
所以给出
var method = jasmine.createSpy();
var context = {a:'b'};
method.call(context);
你可以测试你的间谍方法的调用上下文:
mostRecentCall = method.calls.mostRecent();
expect(mostRecentCall.object).toEqual(context);
在茉莉花文档中查看here以获取更多示例。
答案 1 :(得分:0)
我喜欢Koen的答案,但我决定使用自定义匹配器以更优雅的方式做到这一点。这是lib https://www.npmjs.com/package/jasmine-spy-matchers
使用此lib,您可以执行以下操作:
expect(method).toHaveBeenCalledWithContext(context);