jfairbank / redux-saga-test-plan

Test Redux Saga with an easy plan.
http://redux-saga-test-plan.jeremyfairbank.com
MIT License
1.25k stars 127 forks source link

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

Open StarryFire opened 4 years ago

StarryFire commented 4 years ago
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?