Я тестирую с компонентом, где компонент монтировал, он получает некоторые данные из API,
Я проверяю ответ, чтобы он был успешным, но все же блок catch запускается, я думаю, что это не должно .
и я получаю эту ошибку:
TypeError: Network request failed
at XMLHttpRequest.xhr.onerror (C:\Users\jorge\Documents\testingreact\React-Testing-For-Beginners\node_modules\whatwg-fetch\fetch.js:436:16)
Это мой компонент:
class MoviesList extends PureComponent {
state = {
movies: [],
};
async componentDidMount() {
try {
const res = await fetch(
'https://api.themoviedb.org/3/discover/movie?api_key=APIKEY&language=en-US&sort_by=popularity.desc&include_adult=false&include_video=false&page=1',
)
const movies = await res.json();
if (movies.success) {
this.setState({
movies: movies.results,
})
}
} catch (e) {
console.log(e);
}
}
render() {
...stuff
}
Затем в моем тесте я высмеиваю результат и устанавливаю свойство для ответа с именем success
на истину
Таким образом, ошибка перехвата не должна вызываться, однако console.log в блоке перехвата регистрируется.
Вот тест:
global.fetch = require('jest-fetch-mock')
afterEach(() => {
cleanup
})
const movies = {
success: true,
results: [
{
id: 'hi1',
title: 'title1',
poster_path: 'gfdsftg'
},
{
id: 'hi2',
title: 'title2',
poster_path: 'gfdsftg'
}
]
}
const movie = movies.results[0]
test('<MoviesList />', async () => {
fetch.mockResponseOnce(JSON.stringify(movies))
const {getByTestId, queryByTestId, getAllByTestId} = render(<MoviesList />)
...some assertions here that all pass
})
Почему срабатывает блок захвата?