React-10 异步测试

295 阅读1分钟

findBy

  • 适用于获取异步操作得到的elemet
const element = await findByText('Element');
expect(element).toBeInTheDocument

waitFor

  • 验证异步之后发生变化的内容
// 异步改变name
<p data-testid="name">{test.state.name}</p>
// 验证
await waitFor(() => expect(getByTestId('name').textContent).toBe('123'));

axios / fetch

  • 通过jest.mock与jest.fn对axios和fetch进行mock
    • axios
    jest.mock('axios');
    axios.get.mockImplementationOnce(() =>
      Promise.resolve({data: { name: 'testName', age: 20}})
    );
    
    • fetch
    window.fetch = jest.fn();
    fetch.mockResolvedValueOnce({
      json: async() => ({ name: 'testName', age: 20 })
    })