Multuple在一个规范中为间谍返回值

时间:2017-04-11 14:26:56

标签: angular jasmine

在我的规范中,我正在监视像这样的模拟服务

  spyOn(mockService, 'method').and.returnValue(
      value1
  );

比同样的规格,我想做

  spyOn(mockService, 'method').and.returnValue(
      value2
  );

但它告诉我mockService.method已经被监视过了。 如何让现有的间谍返回一个新值?

如果我mockService.method.and.returnValue(value2)我收到类型错误。我可以做mockService as Spy,但是对于间谍来说,是否有一种更直接的回归方式?

1 个答案:

答案 0 :(得分:0)

虽然我强烈建议您尝试编写规范,以便将两个模拟的需要分成两个单独的it块,但您可能只需捕获在mockService上模拟的方法即可。然后在做第二次模拟之前重新分配它。

EG。

let originalMethod = mockService.method;
spyOn(mockService, 'method').and....

// later,
mockService.method = originalMethod;
spyOn(mockService, 'method).and ......