Я пытаюсь запустить тесты Jasmine в своем приложении Angular, используя наглость в Visual Studio.
У меня есть контроллер, который определяется как:
angular.module('testApp')
.controller('TestAppCtrl', ['TestService',
function ($service) {
var vm = this;
// just a function for testing
vm.sum = function (x, y) { return x + y };
}
]);
Затем я описываю свой тест Жасмин так:
describe('TestAppCtrl', function () {
var ctrl, TestService;
beforeEach(module('testApp'));
beforeEach(inject(function ($controller, _TestService_) {
TestService= _TestService_;
ctrl = $controller('TestAppCtrl');
}));
it('ctrl is defined', function () {
expect(ctrl).toBeDefined();
});
it('1 + 2 equals 3', function () {
expect(ctrl).toBeDefined();
expect(ctrl.sum(1, 2)).toBe(3);
});
});
Второй тест, 1 + 2 equals 3
, не проходит. Я получаю эту ошибку:
Message: TypeError: undefined is not a constructor (evaluating 'ctrl.sum(1, 2)') in file:///...
Я пробовал это разными способами: определяя простую переменную на контроллере (vm.testVar = 12345
) или даже вводя $scope
и определяя переменные на нем. Я правильно ввел его и на тесте. Обе эти попытки потерпели неудачу с одной и той же ошибкой; как будто средство запуска тестов не распознает никаких значений в контроллере, даже если сам контроллер определен.