Как проверить строки назначения в функции саги с помощью шутки

У меня есть функция, состоящая из вызовов эффекта саги, я хочу охватить всю функцию, не пропуская ни одной строки кода, как я могу проверить, есть ли здесь условие

export function* fetchFromSource() {
const dataTypeName = mapDataTypes(dataType);
      Iif (dataTypeName.length === 0) {
        return;
      }
      yield put(sourceActions.onRdsmSourcePlantRequestStarted());
}

как я тестирую dataTypeName.length с помощью jest это мой метод модульного тестирования mapDataTypes

it('should return appropriate dataType when mapDataTypes triggered', () => {
      const expected = 'Items';
      const actionDataType = action.payload.name;
      expect(expected).toEqual(saga.mapDataTypes(actionDataType));
    });

это мой следующий метод тестирования пут

it('should return onRdsmSourcePlantRequestStarted action', () => {
      const expectedAction = {
        type: 'rdsm/sourceView/ON_RDSM_SOURCE_PLANT_REQUEST_STARTED',
      };
      const dataTypeName = '';
      const genNext = generator.next(dataTypeName);
      expect(genNext.value).toEqual(put(expectedAction));
    });

здесь проходит тест для проверки вызова put без входа в блок if. мой вопрос заключается в том, как проверить блок if


person kumar    schedule 21.08.2017    source источник


Ответы (2)


Вероятно, вам следует изменить реализацию вашей саги и сделать mapDataTypes вызов декларативным: const dataTypeName = yield call(mapDataTypes, dataType). Затем вы можете проверить это следующим образом:

it('should end saga when there is no dataTypeName', () => {
  const dataTypeName = '';
  expect(generator.next().value).toEqual(call(mapDataTypes, dataType));
  expect(generator.next(dataTypeName).done).toBeTruthy();
});

it('should return onRdsmSourcePlantRequestStarted action', () => {
  const expectedAction = {
    type: 'rdsm/sourceView/ON_RDSM_SOURCE_PLANT_REQUEST_STARTED',
  };
  const dataTypeName = 'something';
  expect(generator.next().value).toEqual(call(mapDataTypes, dataType));
  expect(generator.next(dataTypeName).value).toEqual(put(expectedAction));
});
person Osmel Mora    schedule 22.08.2017

проверить блок else

it('should return onRdsmSourcePlantRequestStarted action', () => {
      const expectedAction = {
        type: 'rdsm/sourceView/ON_RDSM_SOURCE_PLANT_REQUEST_STARTED',
      };
      const dataTypeName = 'test';
      expect(generator.next(dataTypeName).value).toEqual(put(expectedAction));
    });

проверить блок if

it('should return undefined ', () => {
          const dataTypeName = '';
         expect(generator.next(dataTypeName).value).toBe(undefined));
        });
person kumar    schedule 30.08.2017