mercredi 2 septembre 2020

How to test saga by running code while saga is still running?

function* cb() {
  yield put({ type: 'actionB' }))
}
function* saga() {
  yield take('actionA');
  someEventListener(cb)
  yield take('actionB');
  yield put({ type: 'success' });
}

Now what i want my test to be like is

it('should run saga to completion', () => {
  return expectSaga(saga)
    .dispatch({ type: 'actionA' })
    .runCustomCode(() => {
      const callback = someEventListener.mock.calls[0][0];
      callback();
    })
    .put({ type: 'success' })
    .run();
})

Is there anyway to achieve this?

I am using redux-saga-test-plan to test sagas fyi.

Aucun commentaire:

Enregistrer un commentaire