在笑话/酶测试中,如何使用useState设置useEffect挂钩中的值?

时间:2020-06-16 12:31:38

标签: javascript reactjs typescript jestjs enzyme

当前,我已经使用React钩子创建了一个名为NewStoreTable的功能组件,以通过API调用返回新商店的表。这将使用useEffect挂钩,该挂钩将获取所需的商店,然后获取setStores。

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

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

我创建了一个玩笑/酶单元测试来测试来自模拟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()
   })

预期这将基于根据正确调用的模拟API接收到的结果,使用钩住的useEffect来设置setStores,然后应提供单元测试的预期结果。

但是,这并未将存储设置为模拟API值,并且结果返回0。 因此,我希望能够从模拟API接收值并正确设置此setStores以从模拟API返回值。

0 个答案:

没有答案