Я довольно новичок в React, поэтому, пожалуйста, прости мое невежество. У меня есть компонент:
const Login: FunctionComponent = () => {
const history = useHistory();
//extra logic that probably not necessary at the moment
return (
<div>
<form action="">
...form stuff
</form>
</div>
)
}
При попытке написать шут / энзимный тест один тестовый пример, который я написал, завершается неудачей со следующей ошибкой `› возникла исключительная ситуация объявления
TypeError: Cannot read property 'history' of undefined`
Я пытался использовать jest для насмешки useHistory следующим образом:
jest.mock('react-router-dom', () => ({
useHistory: () => ({ push: jest.fn() })
}));
, но это ничего не делает :( и я получаю ту же ошибку. Любая помощь будет наиболее ценной
ОБНОВЛЕНИЕ :
Так что я понял это. Я был на правильном пути, создавая макет для хука useHistory()
, я определил в неправильном месте. Поворачивает макет должен быть определен (по крайней мере для useHistory) снаружи из области применения методов тестирования, например:
import { shallow } from 'enzyme';
import React from 'react';
import Login from './app/componets/login.component';
jest.mock('react-router', () => ({
...jest.requireActual('react-router'),
useHistory: () => ({ push: jest.fn() })
}));
/**
* Test suite describing Login test
describe('<LoginPage>', () => {
test('should test something', () => {
//expect things to happen
});
})
При вышеупомянутых тестах запускается без ошибок история не определена.