如何监视 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
。