Мне нужна помощь, издевающаяся над селектором.
Я не уверен, как передать ложное состояние в getSelectedDriver
селектор, чтобы получить driver
значение?
Когда я запускаю тест, я получаю следующую ошибку:
Сага
export function* fetchUpdateDriver(action: IUpdateDriverAction): SagaIterator {
const {
payload: { driverId, landlinePhoneNumber, mobilePhoneNumber }
} = action;
const driver = yield select(getSelectedDriver); // how to mock this?
if (driver) {
const { response, error } = yield call(updateDriver, {
currentDriver: driver,
driverId,
landlinePhoneNumber,
mobilePhoneNumber
});
if (response) {
yield put(
fetchUpdateDriverDetailsSucceeded({
landlinePhoneNumber,
mobilePhoneNumber
})
);
} else {
yield put(fetchUpdateDriverDetailsFailed({ error }));
}
}
}
export function* watchFetchUpdateDriverDetails(): SagaIterator {
yield takeEvery(ACTION_TYPES.FETCH_UPDATE_DRIVER_REQUEST, fetchUpdateDriver);
}
Тест
describe('driver sagas', () => {
const { watchFetchUpdateDriverDetails } = require('..');
describe('watchFetchDriverNotWorking', () => {
it('should dispatch fetchUpdateDriverDetailsSucceeded if there is a response', async () => {
const payload = parseResponse({
header: {
success: true
}
});
mockUpdateDriverDetailsRequestService.mockResolvedValue(payload);
await expectSaga(watchFetchUpdateDriverDetails)
.dispatch(
fetchUpdateDriverDetails({
driverId: '123',
landlinePhoneNumber: '123',
mobilePhoneNumber: '123'
})
)
.put(
fetchUpdateDriverDetailsSucceeded({
landlinePhoneNumber: '123',
mobilePhoneNumber: '123'
})
)
.silentRun();
});
});
});