Jasmine - 没有被调用的方法

时间:2016-05-05 15:55:09

标签: javascript unit-testing jasmine

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

1 个答案:

答案 0 :(得分:1)

创建间谍时,默认行为是将对象替换为不调用原始对象的模拟。通常,您可以使用它来测试功能,否则这些功能会调用您不希望被调用的其他API - 您可以测试他们将被调用,而不需要实际上是打电话给

Jasmine确实为您提供了一种调用原始函数的方法:

spyOn(obj, "call").and.callThrough();

请参阅Jasmine documentation for spies(不幸的是,直接链接到and.callThrough部分无效)