2

私は完全にうまく機能するサガを持っています。アクションを呼び出していくつかのデータを含めると、サガがトリガーされ、アクションから値が取り出され、API 呼び出しが実行され、いくつかの yield put で終了します。素晴らしいです。

私は今、そのサガをテストして問題を解決しようとしています。私は必要最小限のサガを書き、問題がどこにあるかを絞り込むためにテストしました。

佐賀:

function* exampleSaga() {
  while(true) {
    yield take('EXAMPLE_SAGA');
    console.log('what is the value inside example');
    const { value } = yield take('ANOTHER_ACTION')
    console.log('value', value);
    yield take('THIRD_TAKE')
  }
}

export { exampleSaga }

テスト:

describe('Saga::Example ', function() {
  it('should take EXAMPLE_SAGA ', () => {
    const saga = exampleSaga()

    expect(saga.next().value).to.deep.equal(take('EXAMPLE_SAGA'))
    expect(saga.next({
      type: 'ANOTHER_ACTION',
      value: 'amazing'
    }).value).to.deep.equal(take('ANOTHER_ACTION'))
    expect(saga.next().value).to.deep.equal(take('THIRD_TAKE'))
  })
})

私が期待しているのは、next() を呼び出してオブジェクト (モックアップされた redux アクション) を渡しているため、サガでそのアクションから値を引き出すことができるはずです。

私が得るものは次のとおりです。

TypeError: Cannot read property 'value' of undefined

イライラすることの 1 つは、私のアプリで、この構文を使用してアクションから値を取得するサガが機能することです。

const { value1, value2 } = yield take('ACTION_NAME')

この問題は、サガを試してテストしたときにのみ発生します。

どんな助けでも大歓迎です。

4

1 に答える 1