Мне нужна помощь в этом. Я работал над этим слишком долго, чтобы думать, что не задаю вопрос.
Заранее благодарю за ваше время и внимание,
Я рыскал в Интернете и пробовал много вещей, но мне все еще не повезло - вот в чем проблема.
В общем, я слежу за https://kentcdodds.com/blog/fix-the-not-wrapped-in-act-warning.
Использование библиотеки react-testing-library в тандеме с jest - и возникновение двух проблем
Warning: An update to Login inside a test was not wrapped in act(...).
- Jest не понимает, что шутка называется
Я действительно думаю, что у меня все подключено правильно - не знаю, что мне не хватает. Внутри макета я могу поместить console.log и могу подтвердить, что макет действительно вызывается.
/*
Test
*/
it('should call props.fetchSignIn with the username and password', async () => {
const promise = Promise.resolve({
email: '[email protected]',
firstName: 'Mike',
lastName: 'A',
});
const fetchSignIn = jest.fn(() => promise);
const { queryByTestId, queryByPlaceholderText } = renderLogin({
fetchSignIn,
});
const emailInput = queryByPlaceholderText('[email protected]');
const passwordInput = queryByPlaceholderText('password');
const submitButton = queryByTestId('submitButton');
fireEvent.change(emailInput, {
target: { value: '[email protected]' },
});
fireEvent.change(passwordInput, { target: { value: 'Password1!' } });
fireEvent.click(submitButton);
// I expected this to fail from the parameters being wrong
expect(fetchSignIn).toHaveBeenCalledWith('asf');
await act(() => promise);
});
/*
Functional Component using the `useState(...)` hooks
onFormFinished is the form `onSubmit` handler
*/
const handleSignIn = async (
email: string,
password: string
): Promise<UserContextType['user']> => {
setIsLoginInFlight(true);
try {
const result = await props.fetchSignIn(email, password);
setIsLoginInFlight(false);
return result;
} catch (error) {
// Other logic removed
};
const onFormFinish = async (values: FormValues): Promise<void> => {
const { email, password } = values;
const signInResult = await handleSignIn(email, password);
// Other logic removed
};
Происходят две вещи 1 - Это предупреждение 2 - Тест не проходит, потому что fetchSignIn
никогда не вызывается
Что ожидается Тест не пройден из-за вызова fetchSignIn
, но неверные параметры
Любой вклад или запрос разъяснений приветствуются.
Спасибо
submit
не помогло - person MichaelA58   schedule 13.05.2020