Обновление: вот небольшая часть моей проблемы. Тесты проходят один раз и не проходят в следующий раз:
http://jsfiddle.net/samselikoff/hhk6u/4/
Проблема в том, что departments
имеет events.on("userSet:company")
, поэтому обе переменные реагируют на событие.
Это общий вопрос о модульном тестировании. В моем приложении запускается определенное событие, и несколько других частей моего приложения прослушивают это событие. Я хотел бы протестировать каждую часть отдельно, поскольку они выполняют разные функции; но для этого я должен запускать событие в каждом тесте.
Это вызывает проблемы, так как первый тест должен инициировать событие, вызывая слушателей в других тестах. Как я могу сохранить свои тесты атомарными, продолжая тестировать несколько прослушивателей событий?
(Я использую QUnit, но я думаю, что это более общий вопрос модульного тестирования).
Ответ:
Джефферсон прав. Один из простых способов решить эту проблему — использовать events.once вместо events.on. Таким образом, вы очищаете свои события от каждого теста.