茉莉花 - 未调用方法

Jasmine - Method not being called

本文关键字:方法 调用 茉莉花      更新时间:2023-09-26
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

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

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

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

请参阅间谍的Jasmine文档(不幸的是,直接链接到and.callThrough部分不起作用(