@bpGusar
*spoiler*

Как тестировать функцию которая возвращает createStore?

Есть функция, в которой происходят какие то определенные действия, и она возвращает createStore, как ее тестировать?
Если банально написать так
expect(createReduxStore(arg)).toEqual(1);
То она выдает
{  
   "dispatch":[  
      Function anonymous
   ],
   "getState":[  
      Function getState
   ],
   "replaceReducer":[  
      Function replaceReducer
   ],
   "subscribe":[  
      Function subscribe
   ],
   Symbol(observable):[  
      Function observable
   ]
}

И я не пойму что с этим делать. В какую сторону копать?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 1
search
@search
мама говорит что я особенный
Вам совершенно не нужно тестировать функцию createStore потому что она очень хорошо протестирована создателями библиотеки и прекрасно работает. Вам нет смысла убеждаться что эта функция делает то, что от неё ожидают.

Но есть смысл протестировать свою функцию редьюсера. Это очень легко - достаточно подавать состояние и действие на вход функции редьюсера и проверять какое новое состояние она возвращает.

UPD

Да и в целом, юнит тестирование кода библиотек - это так себе идея. Лучше потратить время на тестирование своего кода.

Очень часто можно увидеть что программисты в рамках тестирования пытаются убедиться что библиотека правильно вызвала их код. Это, по сути, опять же тестирование кода библиотеки. Процесс не только бесполезный, но и вредный. Почему он вредный? Потому что программист занимается дублирование тестов библиотеки, создавая код, не приносящий пользы, но требующего дополнительного времени на поддержку.

Как понять что программист занят тестированием библиотеки, а не своего кода? По изобилию моков, стабов, предварительными установками состояния, сбросами состояния и повышенной сложности тестов в целом. Правило левой руки такое: если с первого взгляда невозможно понять что тестирует функция, то это означает что она ничего не тестирует, а сжирает время на поддержку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы