Угловой макет `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,

Другие вопросы по тегам