У меня есть компонент, который использует 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);
Пример теста:
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);
}
Так что мне просто нужно издеваться над componentDidMount
или load_data
, чтобы он не пытался вызвать сервер. Если бы метод load_data
передавался как опора, я мог бы просто установить эту опору на jest.fn()
. Однако это мой компонент высшего уровня, который не получает никаких реквизитов.