Я могу успешно протестировать контроллер, используя жасмин через PhantomJs, используя Resharper 9.2. как испытатель.
Я выполнил инструкции https://blogs.endjin.com/2014/09/unit-testing-angularjs-with-visual-studio-resharper-and-teamcity/ для настройки Resharper.
Это сработало: я могу запустить тест для контроллера, если я не буду определять модули, от которых он зависит:
Контроллер:
var moduleName;
(function (moduleName) {
'use strict';
var testableController = (function () {
function testableController($scope) {
var _this = this;
this.$scope = $scope;
$scope.title = "Welcome";
}
testableController.className = 'testableController';
return testableController;
}());
moduleName.testableController = testableController;
})(moduleName || (moduleName = {}));
Файл спецификации выглядит следующим образом:
///<reference path="~/Scripts/jasmine/jasmine.js"/>
///<reference path="~/Scripts/jasmine/angular.js"/>
///<reference path="~/Scripts/jasmine/angular-mocks.js"/>
///<reference path="~/Scripts/angular-ui/ui-bootstrap.min.js" />
///<reference path="~/Scripts/jasmine/controllers.js"/>
///<reference path="~/Scripts/App/Controllers/testableController.js" />
///<reference path="~/Scripts/App/AppJasmine.js" />
describe("Controllers", function() {
beforeEach(module("moduleName"));
describe("Jasmine testableController", function () {
var scope,
controller;
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
controller = $controller('testableController', { $scope: scope });
}));
it('should set the page title as "Welcome"', function () {
expect(scope.title).toBe('Welcome');
});
});
});
Реальный контроллер использует angular ui bootstrap "ui.bootstrap". контроллер работает на странице, если я изменяю его на следующий образец, но когда я пытаюсь его протестировать, появляется ошибка
Error: [$injector:unpr] Unknown provider: $templateRequestProvider <- $templateRequest <- $uibModal
http://errors.angularjs.org/1.2.24/$injector/unpr?p0=%24templateRequestProvider%20%3C-%20%24templateRequest%20%3C-%20%24uibModal in http://localhost:61032/referenceFile?path=~/webui/trunk/Netvacation.Pegasus.WebUI/Scripts/jasmine/angular.js (line 3802)
Контроллер с зависимостью от Bootstrap
angular.module('moduleName', ['ui.bootstrap']);
var moduleName;
(function (moduleName) {
'use strict';
var testableController = (function () {
function testableController($scope, $uibModal) {
var _this = this;
this.$scope = $scope;
this.$uibModal = $uibModal;
$scope.title = "Welcome";
}
testableController.className = 'testableController';
return testableController;
}());
moduleName.testableController = testableController;
})(moduleName || (moduleName = {}));
** РЕДАКТИРОВАТЬ 1 ** Я попробовал
beforeEach(
function () {
module("ui.bootstrap");
module("moduleName");
}
);
но имеют одинаковую ошибку.
Изменить 2 Я использую
http://angular-ui.github.io/bootstrap/ Версия: 1.3.3 - 2016-05-22
AngularJS v1.2.24
Изменить 3 Я не хочу тестировать $uibModal, но издеваюсь над ним.