Издевательство над контроллером AngularJS заканчивается ошибкой типа

#angularjs #visual-studio #mocking #resharper #jasmine

#angularjs #visual-studio #издевательство #resharper #jasmine

Вопрос:

Я пытаюсь запустить учебное пособие Angular по PhoneCat в Visual Studio как проект веб-страницы. Я добрался до шага 2 (https://docs.angularjs.org/tutorial/step_02 ) и веб-страница работает нормально. Однако модульный тест завершается ошибкой в строке beforeEach с ошибкой:

Ошибка типа: невозможно получить свойство ‘$injector’ с неопределенной или нулевой ссылкой

в workFn(…scripts angular-mocks.js:2013:7)

У меня есть тест без каких-либо насмешек, поэтому я знаю, что все остальные компоненты хорошо работают вместе. В принципе, Visual Studio 2013, ReSharper 8 и Jasmine 2, похоже, работают нормально. Вне модульных тестов сама страница работает нормально. Он появляется и показывает три телефона, определенные в контроллере.

Я недостаточно силен (пока) в javascript, чтобы разобраться и разобраться, поэтому я прихожу сюда, чтобы попросить о помощи. Вы можете увидеть весь код на моем github по адресу https://github.com/qanwi1970/PhoneCat-VS/tree/develop . Если моя группа продолжит работу с Angular, то очень важно иметь возможность писать значимые модульные тесты в Visual Studio.

Спасибо за вашу помощь и советы.

ОБНОВЛЕНИЕ: я обнаружил, что комментарии /// в верхней части файла js сообщают Visual Studio о необходимых файлах javascript (для Intellisense и тому подобное), но не сообщают об этом участникам тестирования. Мне нужно уйти на день, но именно над этим я буду работать завтра. Как мне сообщить ReSharper / Chutzpah controllerSpec.js потребности controller.js ? На этот вопрос, вероятно, уже дан ответ, но у меня нет времени на день.

Комментарии:

1. Вам удалось заставить это работать?

2. @Rogier21 Еще нет. Я попытался запустить тесты с помощью Chutzpah вместо ReSharper, и я получаю другую ошибку, но она находится в той же строке кода. В нем говорится. «Ошибка ссылки: не удается найти переменную: Модуль в … controllersspec.js:18»

3. Жаль, у меня точно такая же проблема, но даже 8.2.1 не помогло.

Ответ №1:

Убедитесь, что вы используете ReSharper 8.2.1. Там были некоторые исправления для поддержки Jasmine 2.0, которые могут привести к ошибке, подобной этой.

Комментарии:

1. Похоже, что моя лицензия, которая была в порядке для 8.2.0, не распространяется на 8.2.1. Если это исправление, то мне придется искать способ без повторной обработки для запуска моих тестов Angular.

2. Вам не нужна новая лицензия для 8.2.1 — это небольшая версия для обслуживания. Ваша лицензия 8.x должна работать нормально. Если это не принято, вам следует связаться support@jetbrains.com , потому что что-то пошло не так.

3. Спасибо. Обновление с 8.2.0 до 8.2.3 исправило это для меня.