Я пытаюсь начать с тестов Karma, добавив их в существующее приложение Angular.
Это мой основной файл определения приложения:
angular
.module('myApp', [
'ngRoute',
'moduleAdherence'
]);
Это мой файл контроллера:
angular
.module('moduleAdherence', [])
.controller('AdherenceCtrl', ['$scope', function ($scope) {
$scope.awesomeThings = [1,2,3,4];
}]);
Это мой первый удар в файле:
describe('Controller: AdherenceCtrl', function () {
beforeEach(module('myApp'));
var MainCtrl,
scope;
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
MainCtrl = $controller('AdherenceCtrl', {
$scope: scope
});
}));
it('should attach a list of awesomeThings to the scope', function () {
expect(scope.awesomeThings.length).toBe(4);
});
});
Когда я пытаюсь запустить это с помощью grunt test
, он терпит неудачу со следующей ошибкой:
Uncaught Error: [$injector:nomod] Module 'd3' is not available!
You either misspelled the module name or forgot to load it.
If registering a module ensure that you specify the dependencies
as the second argument.
http://errors.angularjs.org/1.2.0/$injector/nomod?p0=d3
at /Users/me/Dropbox/projects/myapp/app/bower_components/angular/angular.js:1498
Я не понимаю этого, потому что этот контроллер не использует D3. Я использую D3 в другом месте приложения, в директиве, но я не регистрирую его с помощью модуля (я использую внешний файл D3).
Почему Карма замечает D3? Разве он не может проверить этот контроллер без D3?