dar*_*ool 3 javascript reactjs jestjs enzyme
我有一个使用组件axios内componentDidMount从服务器获取数据。使用 Jest / Enzyme 对组件进行单元测试时,测试失败并出现网络错误。
我如何模拟componentDidMount以使axios对服务器的调用不会发生?
有问题的组件使用React DnD并且是一个DragDropContext.
class Board extends Component {
componentDidMount() {
this.load_data();
}
load_data = () => {
// axios server calls here
}
}
export default DragDropContext(HTML5Backend)(Board);
Run Code Online (Sandbox Code Playgroud)
示例测试:
it('should do something', () => {
const board = shallow(<Board />);
// get the boardInstance because board is wrapped in Reactdnd DragDropContext
const boardInstance = board.dive().instance();
boardInstance.callSomeMethodToTestIt();
expect(testSomething);
}
Run Code Online (Sandbox Code Playgroud)
所以我只需要模拟componentDidMount或load_data这样它就不会尝试调用服务器。如果该load_data方法作为道具传入,我可以简单地将该道具设置为jest.fn(). 然而,这是我没有收到任何道具的顶级组件。
小智 7
随着对酶的新更新,生命周期方法默认启用。( https://airbnb.io/enzyme/docs/guides/migration-from-2-to-3.html#lifecycle-methods )
但是,您可以使用浅渲染禁用它们,如下所示:
const board = shallow(<Board />, { disableLifecycleMethods: true });
Run Code Online (Sandbox Code Playgroud)
文档:https : //airbnb.io/enzyme/docs/api/shallow.html#shallownode-options--shallowwrapper
| 归档时间: |
|
| 查看次数: |
7423 次 |
| 最近记录: |