Реагировать энзим + шутка, как проверить на Submit - PullRequest
0 голосов
/ 03 апреля 2020
const handleSubmit = (e) => {
 .preventDefault();
 if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)) {
  setError(true);
  return;
 }
if (loading) return;
  setError(false);
  setLoading(true);
  return Axios.post("/send-email", { value, messageHtml }).then(() => {
   clearTimeout(timerId);
   setSuccess(true);
   setLoading(false);
   setValue("");
   timerId = setTimeout(() => {
    setSuccess(false);
   }, 5000);
    }).catch(() => setLoading(false));
  };

render(
<form onSubmit={handleSubmit} id="get-list-form" autoComplete="off">
 <input
   value={value}
   required
   onChange={handleChange}
   className="input 
   placeholder="Enter your email "
   type="text"
  />  
<button type="submit" className={`button ${btnClass}`}>{btnMessage}</button>
 </form>
);

У меня есть этот код. это функциональный компонент. и как я могу проверить функцию handleSubmit ?? или перехватить топор ios вызов? его вызывали на событие onSubmit. вызывается событие onSubmit.

wrapper.find('form') .simulate('submit', { preventDefault () {} });

**this code successfuly called onSubmit on form,
but i dont understand how to test axios call inside her.**

1 Ответ

0 голосов
/ 04 апреля 2020

Вам нужно смоделировать функцию axios.post() В вашем тестовом файле, чтобы axios.post() вернул выполненное обещание.

import * as axios from 'axios';
import MyComponent from '../MyComponent';

jest.mock('axios');// this should come immediately after imports

test('MyComponent handle submit', ()=>{
   axios.post.mockImplementationOnce(() => Promise.resolve());

   // rest of your test
});

Для получения дополнительной информации вы можете взглянуть на Функции Jest mock do c
Причина насмешливого топора ios сразу после обсуждения импорта здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...