我有一个包含一些静态函数的类。我们将该类称为allFunctions。 allFunctions.makeChanges(a,b,c)调用allFunctions.callUpdate()。
这些函数均未返回任何值。他们两个都简单地修改了一些参数并调用了提供它们的函数。
export class allFunctions {
public static makeChanges(a, b, c) {
...
this.callUpdate(c, d);
}
public static callUpdate(c, d) {
otherFunctions.makeUpdate();
}
}
如果要同时调用callUpdate()函数,我想测试何时调用makeChanges()函数。
我尝试过这样的事情:
import { allFunctions } from '../allFunctions';
describe('simple test', () => {
it('makeChanges() should call callUpdate()', () => {
const a = 1, b = 2, ...;
allFunctions.callUpdate = jest.fn();
const result = allFunctions.makeChanges(a,b,c);
expect(allFunctions.callUpdate).toBeCalled();
});
});
遗憾的是,这不起作用。是否可以测试一个功能是否调用了另一个功能?如果是这样,最好的方法是什么?
答案 0 :(得分:0)
除在类中使用公共词外,所有代码似乎都可以找到。删除它们。
export class allFunctions {
static makeChanges(a, b, c) {
...
this.callUpdate(c, d);
}
static callUpdate(c, d) {
otherFunctions.makeUpdate();
}
}
答案 1 :(得分:0)
我终于找到了解决方案。我需要使用间谍代替jest.fn();
解决方案如下:
import { allFunctions } from '../allFunctions';
describe('simple test', () => {
it('makeChanges() should call callUpdate()', () => {
const a = 1, b = 2, ...;
const spy = jest.spyOn(allFunctions, 'callUpdate');
allFunctions.makeChanges(a,b,c);
expect(spy).toHaveBeenCalled();
});
});