监视由 Jasmine 中的另一个函数调用的函数



如何监视 Jasmine 中另一个函数调用的函数?

如果我打电话给this.bar(),期望是正确的,但我对此不感兴趣。

规范

import * as src from './src;
describe('app', () => {
  it('should call bar', () => {
    spyOn(src, 'bar');
    src.foo();
    expect(src.bar).toHaveBeenCalled();
  });
});

function foo() {
  bar();
}
function bar() {
  console.log('bar');
}
export {
  foo,
  bar,
};

在Jasmine中,当你使用spyOn时,它会模拟该函数并且不执行任何内容。如果你想测试里面的进一步函数调用,你需要调用and.callThrough()如下,请尝试一下

spyOn(src, 'bar').and.callThrough();

检查这个问题:AngularJS - 如何测试一个函数是否从另一个函数中调用?.似乎需要调用正在测试的函数(bar)与正在spyOn(src.bar)相同的引用。您需要在 foo 内部引用 src.bar ,因此您必须使用 this.bar

最新更新