Flux Store - модульные тесты
Я пишу юнит-тесты для нескольких магазинов Flux и столкнулся с небольшим раздражением.
Мои магазины обычно строятся так:
storeObj = {
...
}
_secretsetterfunction = function (){}
module.exports storeObj
Как видите, поскольку функция setter находится вне объекта store, она не доступна напрямую.
Это создает проблему, поскольку единственный способ проверить / манипулировать данными хранилища - пройти через Action -> Dispatcher -> слушатель событий (действие технически может быть отключено), что я не хотел бы пройти, когда модульное тестирование магазина.
Альтернатива состоит в том, чтобы на самом деле поместить методы setter в объект store, но я бы не хотел этого делать.
Какие-нибудь мысли?
3 ответа
Так что команда Flux только что упомянула об этом в своем блоге, хотя и использует свой вариант под названием Jest. Все еще стоит прочитать:
У меня тоже была эта проблема с использованием Жасмин.
Я написал сообщение в блоге и пример репозитория о том, как получить ссылку на эти частные внутренние функции, когда вы не используете Jest: http://bensmithett.com/testing-flux-stores-without-jest/
TL; DR - использовать rewire
Акции по сути являются публичными API магазина. Вам нужно только проверить результаты действий, чтобы полностью протестировать свои магазины.