var obj = {};
obj.localContext = 'firstTemp';
obj.call = function(){
obj.localContext = 'secondTemp';
};
茉莉花规格:
it('value of localContext', function(){
spyOn(obj, 'call');
obj.call();
expect(obj.localContext).toEqual('secondTemp');
});
为什么永远不会调用obj.call()
方法?运行规范时,obj.localContext
的值仍然是firstTemp
而不是secondTemp
答案 0 :(得分:1)
创建间谍时,默认行为是将对象替换为不调用原始对象的模拟。通常,您可以使用它来测试功能,否则这些功能会调用您不希望被调用的其他API - 您可以测试他们将被调用,而不需要实际上是打电话给。
Jasmine确实为您提供了一种也调用原始函数的方法:
spyOn(obj, "call").and.callThrough();
请参阅Jasmine documentation for spies(不幸的是,直接链接到and.callThrough
部分无效)