Угловой макет `module`, приводящий к '[Object object] не является функцией'
Я пытаюсь создать несколько модульных тестов в Angular, используя Jasmine, запускаемый через Teaspoon. Тесты запущены, однако у меня есть простой тест, чтобы проверить наличие неисправного контроллера. У меня есть следующие настройки теста.
//= require spec_helper
require("angular");
require("angular-mocks");
var app = require("./app");
describe("My App", function() {
describe("App Controllers", function() {
beforeEach(module("app"))
it("Should have created an application controller", inject(function($rootScope, $controller){
var scope = $rootScope.$new();
ctrl = $controller("ApplicationCtrl", { $scope: scope });
}));
})
})
Операторы require обрабатываются браузером Browserify, который обрабатывает мои зависимости, но я также могу подключиться к звездочкам, которые я использую для помощника спецификации.
Внутри приложения, которое требуется, у меня есть
require("angular");
var controllers = require("./controllers");
var app = angular.module("app", [
"app.controllers"
]);
exports.app = app;
Когда я запускаю этот тест, я получаю следующую ошибку
Failure/Error: TypeError: '[object Object]' is not a function (evaluating 'module("aialerts")')
Я потратил довольно много времени, пытаясь понять это, но я понятия не имею, что происходит. Любая помощь приветствуется.
2 ответа
У меня такая же проблема. Измените эту строку:
beforeEach(module("app"))
чтобы:
beforeEach(angular.mock.module("app"))
Browserify использует стиль Node require
, где module
это объект, который вы можете использовать для экспорта функциональности:
console.log(module); // {exports: {}}
angular-mocks.js пытается прикрепить функцию к window.module
, но это невозможно в Browserify/Node.
При взгляде на источник угловых насмешек, кажется, что угловые насмешки также module
функция к angular.mock
, Таким образом, вместо использования глобального module
объект, вы должны использовать angular.mock.module
,