Ответ 1
У меня была та же проблема. Измените эту строку:
beforeEach(module("app"))
в
beforeEach(angular.mock.module("app"))
Я пытаюсь создать некоторые модульные тесты в 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 обрабатываются браузером, который обрабатывает мои зависимости, но я также могу подключить звездочки, которые я использую для вспомогательного элемента spec.
Внутри приложения, которое требуется, у меня есть
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")')
Я потратил немало времени, пытаясь понять это, но я понятия не имею, что происходит. Любая помощь была оценена.
У меня была та же проблема. Измените эту строку:
beforeEach(module("app"))
в
beforeEach(angular.mock.module("app"))
Browserify использует Node -style require
, где module
- объект, который можно использовать для экспорта:
console.log(module); // {exports: {}}
angular -mocks.js пытается подключить функцию к window.module
, но это невозможно в Browserify/Node.
Просматривая источник angular -mocks, кажется, что angular -моменты также привязывают функцию module
к angular.mock
. Поэтому вместо использования глобального объекта module
вы должны использовать angular.mock.module
.