Flux Store - модульные тесты

Я пишу юнит-тесты для нескольких магазинов Flux и столкнулся с небольшим раздражением.

Мои магазины обычно строятся так:

storeObj = {
...
}

_secretsetterfunction = function (){}

module.exports storeObj

Как видите, поскольку функция setter находится вне объекта store, она не доступна напрямую.

Это создает проблему, поскольку единственный способ проверить / манипулировать данными хранилища - пройти через Action -> Dispatcher -> слушатель событий (действие технически может быть отключено), что я не хотел бы пройти, когда модульное тестирование магазина.

Альтернатива состоит в том, чтобы на самом деле поместить методы setter в объект store, но я бы не хотел этого делать.

Какие-нибудь мысли?

3 ответа

Решение

Так что команда Flux только что упомянула об этом в своем блоге, хотя и использует свой вариант под названием Jest. Все еще стоит прочитать:

http://facebook.github.io/react/blog/2014/09/24/testing-flux-applications.html?utm_source=javascriptweekly&utm_medium=email

У меня тоже была эта проблема с использованием Жасмин.

Я написал сообщение в блоге и пример репозитория о том, как получить ссылку на эти частные внутренние функции, когда вы не используете Jest: http://bensmithett.com/testing-flux-stores-without-jest/

TL; DR - использовать rewire

Акции по сути являются публичными API магазина. Вам нужно только проверить результаты действий, чтобы полностью протестировать свои магазины.

Другие вопросы по тегам