我有一个功能,我试图为其添加单元测试。
功能
async getStuff() {
const { foo } = this.props.data;
const { bar } = this.state;
const { bazz } = this.props;
const { x, y } = await helpers.getStuffFromServer(foo, bar, bazz);
this.setState({ x, y });
}
测试
it('should get stuff & set state', async() => {
const returnObject = {
x: dummyData.x,
y: dummyData.y
};
getStuff.mockReturnValue(() => returnObject);
const fakeBazz = jest.fn();
const wrapper = setup({ bazz: fakeBazz });
wrapper.instance().componentDidMount();
await expect(getStuff).toBeCalledWith(dummyData.foo, bar, fakeBazz);
console.log(wrapper.state());
});
我的expect
断言有效且正确断言getStuff
被调用了正确的值。但getStuff
会返回2 x个对象x
& y
- 它用于setState
。我试图模拟getStuff
的返回值,但是这些模拟的返回值没有在状态中设置。
我正确使用mockReturnValue
吗?
答案 0 :(得分:2)
您不是应该在模拟功能上设置它吗?
fakeBazz.mockReturnValue(returnObject);
请参阅:https://medium.com/@rickhanlonii/understanding-jest-mocks-f0046c68e53c