我正在尝试使用react-testing-lib进行一些集成测试
我想在我的React类handleSubmit
handleSubmit(){
// does some stuff
// calls an action creator
}
我基本上想对这个方法进行存根,以便它返回null
/ undefined
或其他任何值。但我不希望它真正地叫动作创建者
我想断言某些UI的原因是,调用动作创建者给我的错误是:
动作必须是普通对象。使用自定义中间件执行异步操作。
我也尝试过jest.mock(thismethod)
和jest.spyOn()`,但似乎都不起作用。我只想让它做类似的事情
myFunc() {
}
好像它是一个空函数,什么也不做。我该如何存根?
答案 0 :(得分:0)
看来handleSubmit
是一种原型方法...如果是原型方法,则可以这样模拟:
import * as React from 'react';
import { render, fireEvent } from 'react-testing-library';
class MyComponent extends React.Component {
handleSubmit() { // <= prototype method
throw new Error('should not get here');
}
render() {
return (<button onClick={this.handleSubmit}>the button</button>);
}
}
test('MyComponent', () => {
const mock = jest.spyOn(MyComponent.prototype, 'handleSubmit');
mock.mockImplementation(() => {}); // <= replace the implementation
const { getByText } = render(<MyComponent/>);
fireEvent.click(getByText('the button'));
expect(mock).toHaveBeenCalled(); // Success!
});
只需确保在渲染组件之前在原型上实现了模拟。
答案 1 :(得分:0)
尝试下面的功能和动作模拟:
SpecificFunction<A,B>