У меня есть компонент реагирования с методом, запрашивающим мой API.В целях тестирования я издевался над модулем axios . Jest распознает первый вызов с помощью get, но не второй с post, за исключением того, что указано перед оператором get.Я могу записать, что у axios.post.mock.result есть Promise for value в моем компоненте реагирования.В моем тесте он пуст.Я выделил проблему следующим образом:
Мой метод компонента
import axios from 'axios';
async getData(data) {
let response = await axios.get('/api',
{
params: {
data
}
});
if (response.status === 200) {
response = await axios.post('/api',
response.data
);
if (response.status === 200) {
this.setState({ data: true });
}
}
}
render() {
if (!this.state.data) {
return (
<button
onClick={() => this.getData(this.state.input)}
>Click me</button>)
} else {
return (<p>Success</p>);
}
Тест
import {render, fireEvent} from 'react-testing-library';
import axios from 'axios';
import App from '../App';
jest.mock('axios');
axios.get.mockResolvedValue({ status: 200, data: { hello: 'world' } });
axios.post.mockResolvedValue({ status: 200 });
test('Component uses axios', () => {
let app = render(<App />);
fireEvent.click(app.getByText('Click me'));
expect(axios.get).toBeCalled();
expect(axios.post).toBeCalled();
});