Тестирование редукторов, которые меняют несколько свойств с помощью Immutable.js - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь перенести приложение React / Redux на Immutable.JS и у меня есть вопрос о тестировании.

Учитывая редуктор, который делает что-то вроде этого:

export default (state = initialState, action) => {
  switch (action.type) {

  case RUN_ENDED:
    return state.set('isRunning', false)
                .set('roundResult', action.data)
  default:
   return state
}

Я хотел бы проверить, правильно ли установлены оба свойства.

Мои старые тесты выглядели бы так:

it('should handle the RUN_ENDED action', () => {

  const action = {
    type: RUN_ENDED,
    data: {
      winnerId: 0
    }
  }

  const result = simulatorReducer(undefined, action)

  expect(result).to.deep.equal({
    isRunning: false,
    roundResult: action.data
  })

})

С Immutable я, кажется, не могу сделать эти сравнения совершенно таким же образом. Я могу явно проверить каждое значение в result с помощью result.get('theProperty'), но это кажется немного трудоемким, если у меня есть 5-6 значений.

Есть ли способ сделать это с помощью Immutable?

1 Ответ

0 голосов
/ 27 августа 2018

вы можете использовать https://www.npmjs.com/package/jest-immutable-matchers

так, например: expect(result).toEqualImmutable(Immutable.Map({isRunning: false, ...}));

...