我正在将反应测试引入团队代码库中,但是我似乎无法像在代码库其他地方的常规util / helper函数中那样模拟函数。
我的组件看起来像:
import {
util1,
util2,
} from '../utils/utils_for_this_component';
const ParentComponent = ({ prop1, prop2 }) => {
const result = util1(prop1, prop2);
return (
<ChildComponent1
aProp={util2(result)}
>
...
</ChildComponent1>
);
};
所以我只想验证我在渲染此道具时,传递给util2的result
是我们期望的样子。
import * as Utils from '../utils/utils_for_this_component';
...
it('should do the thing', () => {
const spy = jest.spyOn(Utils, 'util2');
render(<Provider store={store}>{<ParentComponent {...props} />}</Provider>);
expect(spy).toHaveBeenCalledTimes(1);
});
但是我从来没有通过,它说我的间谍从未被召唤过。 我在这里想念什么吗?为什么我无法监视正在使用的实际util2?
最终,我想验证传递给util2的参数是否正确,但是现在Id只是想验证其是否被正确监视。我知道该函数被调用是因为1.它可以在prod中工作,并且2.如果我记录结果,则在运行测试用例时就会显示出来。
错误:
expect(jest.fn()).toHaveBeenCalledTimes(1)
Expected mock function to have been called one time, but it was called zero times.
55 | const spy = jest.spyOn(Utils, 'util2');
56 | render(<Provider store={store}>{<ParentComponent ... />}</Provider>);
> 57 | expect(spy).toHaveBeenCalledTimes(1);
58 | });
59 | });
60 |