如何监视正在测试的服务的功能?

时间:2019-01-11 00:29:53

标签: angularjs jasmine

我有一个带有两个函数的角度服务,我想测试是否使用参数'x'调用函数1调用了函数2。

通过以下测试:

  describe('myFunction1', function() {
    it('Should call myFunction2 if parameter is 'x'', function() {
      spyOn(myService, 'myFunction2');
      myService.myFunction1('x');
      expect(myService.myFunction2).toHaveBeenCalled();
    });
  });

我的间谍没有检测到该功能的任何更改

function myFunction1(param) {
   if(param === 'x') {
      myFunction2();
  }
}

但是如果我将功能更改为以下,则间谍可以正常工作,(但是实际应用程序中断了,所以这不是解决方案。

function myFunction1(param) {
   if(param === 'x') {
      this.myFunction2();
  }
}

1 个答案:

答案 0 :(得分:0)

没有看到您的完整服务或测试文件,听起来myFunction2不是公共功能。 如果您的服务不包含以下内容:

return {
    myFunction1: myFunction1,
    myFunction2: myFunction2
};

...然后,您将不得不寻找另一种监视param === 'x'结果的方法。