Тестирование AngularJS-приложения при помощи Testacular (karma)

  • 05, 15, 2013
  •  
  •  Angular.js, Testing
  • Комментарии к записи Тестирование AngularJS-приложения при помощи Testacular (karma) отключены

Ниже опишу проблемы, которые возникли при настройке среды тестирования, и их решения.

TypeError: jasmine.getEnv().currentSpec is null

Ошибка состоит в том, что версия используемого в проекте AngularJS не совпадает с версией установленного через npm пакета karma.
Поэтому в конфиге нужно заменить значение переменной files:

Т.е. заменить ANGULAR_SCENARIO и ANGULAR_SCENARIO_ADAPTER на локальные. Чуть более подробно написал здесь — http://stackoverflow.com/questions/10970809/typeerror-jasmine-getenv-currentspec-is-null/16547190#16547190.
Но вообще-то, если подумать, лучший способ — обновить AngularJS.

Executed 0 of 0 SUCCESS, т.е. не выполняются тесты, сколько бы их ни было

Лечится все правильным порядком файлов опять же в files:

Тут важно, чтобы jasmine грузился после angular. Вот обсуждение этого — https://github.com/karma-runner/karma/issues/66#issuecomment-9535599
Вторая возможная причина — для unit-тестов не надо грузить angular-scenario.jshttp://stackoverflow.com/a/14988427/801426. Я могу сказать только, что от их отсутсутвия хуже не стало.

browser is not defined

В итоге все приходит к этой проблеме.
Она происходит от того, что человек не разобрался, что он хочет: e2e-тесты или unit-тесты.
Вот тест для примера, который также вызывает такую ошибку:

Дело в том, что e2e-тесты предназначены для грубого тестирования всего приложения (доступность страниц по ссылкам, проверке контента страниц по ссылкам).
Unit-тесты .. ну в общем это unit-тесты.
Так вот.
Jasmine нужно грузить только для unit-тестов, angular-scenario — только для e2e-тестов. Друг с другом они несовместимы, и поэтому нужно иметь два конфига: один для unit-тестов, другой — для e2e-тестов.
Вот примерный конфиг для e2e-тестов:

Полезные ссылки
https://github.com/angular/angular-seed — приложение-пример для показа правильного тестирования от создателей AngularJS
http://docs.angularjs.org/guide/dev_guide.e2e-testing — описание API e2e-тестов
http://www.youtube.com/watch?v=MVw8N3hTfCI — видео про начало работы с Testacular
http://karma-runner.github.io/0.8/index.html — официальная документация.

d6c7a771bfa6c2dca72ebe5927e6a6f48a8a4511c5

d6c7a771bfcb1003aff8e16db0c0305c89821dc7a1

Comments are closed.