0

У меня проблема с моими промежуточными тестами (например, интеграционные тесты, что означает, что они на полпути между модульными тестами и тестами E2E).Углеродное тестирование кармы/жасмина вызывает конфликт между тестовыми файлами

Моя сборка является AngularJS с RequireJS (которая в Карме требует использования плагина RequireJS для запуска тестов). Я фактически использую плагин под названием AngularAMD, чтобы заставить их работать вместе. Поэтому, когда я запускаю свои тесты, сначала должен запускаться файл начальной загрузки, чтобы убедиться, что приложение Angular было инициализировано, прежде чем тесты могут запускаться против приложения.

Поскольку они являются интеграционными тестами, они проверяют, что службы соединяются с реальными HTTP-запросами и что происходит преобразование (то есть, что пользователь, который был выведен из системы, теперь зарегистрирован). Итак, это асинхронные тесты, требующие времени для получения ответа.

Моя проблема - Карма/Жасмин, кажется, загружает угловое приложение только один раз в начале, а затем каждый тест, кажется, использует этот экземпляр при выполнении своих тестов. Поэтому, если в двух тестах используется служба с постоянным состоянием кеша (т.е. пользователь входит в систему), каждый тест вытягивается из одного и того же состояния.

Так, например, у меня есть один интеграционный тест, который требует, чтобы пользователь выходил из системы, и еще один интеграционный тест, в котором пользователь должен войти в систему, поэтому каждый из них вмешивается в другой.

Возможно ли каким-либо образом настроить Karma/Jasmine, чтобы каждый тестовый файл загрузил собственный экземпляр AngularJS для тестирования? Я пытаюсь понять, как это сделать, но я думаю, что это может быть невозможно, если я не заставляю Karma/Jasmine запускать один тест за раз.

Мысли?

ответ

0

Jasmine has beforeEach/beforeAll and afterEach/afterAll methods Вы можете определить для своей среды настройки. В зависимости от вашей области действия между тестовыми файлами, вы должны определить переопределение методов beforeX в каждом файле, но до каждого теста вы должны получить чистое приложение.

+0

Это не решает проблему при использовании угловых и RequireJS, поскольку состояние сохраняется между файлами. Если один тестовый файл вводит угловую услугу «UserService» и регистрирует пользователя, когда другой тестовый файл также вводит эту услугу, пользователь будет входить в систему (даже если для этого теста требуется, чтобы пользователь был выведен из системы) , Поэтому, если этот тест регистрирует пользователя, у другого тестового файла есть тесты, которые начинают сбой, потому что пользователь больше не находится в требуемом состоянии входа в систему. – ngDeveloper

+0

На самом деле, я думаю, что обнаружил, что, поскольку я выполняю асинхронные вызовы (тесты интеграции используют запросы API, ожидающие ответа), поскольку я использую метод 'done()' в jasmine, чтобы сделать эти работы, результат фактически, каждый тест интеграции запускается один за другим, а не одновременно, поэтому похоже, что проблема решена. – ngDeveloper

Смежные вопросы