jestでリクエスト途中の状態をチェックする


例えばボタンが押されてからリクエストが完了するまで読み込み中になる場合

Button.js
//...
const onPress = async ()=> {
  setLoading(true)
  await fetch(...) // 何かしらの非同期処理
  setLoading(false)
}
Button.spec.js

describe('button', ()=> {
  it('assigns loading true till the request to complete', ()=> {
    // ...createやfetchをmockした後
    expect(button.props.loading).toEqual(false)
    let promise
    act(()=> {
      promise = button.props.onPress()
    }) // ボタンが押された処理を開始
    expect(button.props.visible).toEqual(true)
    await act(async()=> await promise) // リクエストを待機
    expect(button.props.visible).toEqual(false)
  })
})

と言った具合に、非同期な処理の途中状態をテストすることが出来ます。