Как использовать useState для установки значения из хука useEffect в тесте шутки / фермента? - PullRequest
0 голосов
/ 16 июня 2020

В настоящее время я создал функциональный компонент NewStoreTable, используя перехватчики реакции для возврата таблицы новых хранилищ из вызова API. Здесь используется хук useEffect, который получает необходимые хранилища, а затем setStores.

    const [stores, setStores] = useState<INewStore[]>([])

    useEffect(() => {
      getNewStores()
        .then((result) => result.length !== 0 && setStores(result))
    })

Я создал модульный тест jest / ferme для проверки ответа от фиктивного API. Затем я использовал метод setImmediate для обновления newStoreTable.

  const newStoreTable = mount(<NewStoreTable />)

  setImmediate(() => {
    newStoreTable.update()

     try {
       const result = newStoreTable.find('TableRow')
       const rows = result.map((row) => row)
       expect(rows.length).toEqual(2)

     } catch (e) {
       return fail(e)
     }
     done()
   })

Ожидается, что setStores будет использовать подключаемый useEffect на основе результата, который он получает от макетного API, который вызывается правильно, а затем должен дать ожидаемый результат для модульного теста.

Однако это не устанавливает для хранилищ фиктивные значения API и возвращает 0 в качестве результата. Поэтому я хочу иметь возможность получать значение из фиктивного API и правильно использовать этот setStores, чтобы возвращать значения из фиктивного API.

...