redux-saga-test-plan icon indicating copy to clipboard operation
redux-saga-test-plan copied to clipboard

How to run some code after a certain dispatch while saga is still running

Open StarryFire opened this issue 3 years ago • 0 comments

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?

StarryFire avatar Sep 02 '20 10:09 StarryFire