angular mock`module`导致'[Object object]不是函数'

PaR*_*Nos 25 angularjs teaspoon angular-mock

我正在尝试使用通过Teaspoon运行的Jasmine在Angular中创建一些单元测试.测试正在运行,但是我有一个简单的测试只是为了测试是否存在失败的控制器.我有以下测试设置.

//= 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 });
    }));

  })

})
Run Code Online (Sandbox Code Playgroud)

需要的语句由Browserify处理,它处理我的依赖项,但我也可以挂钩我用于规范助手的链接.

在我需要的应用程序内部

require("angular");
var controllers = require("./controllers");

var app = angular.module("app", [
  "app.controllers"
]);

exports.app = app;
Run Code Online (Sandbox Code Playgroud)

当我运行此测试时,我得到以下错误

Failure/Error: TypeError: '[object Object]' is not a function (evaluating 'module("aialerts")')
Run Code Online (Sandbox Code Playgroud)

我花了很长时间试图解决这个问题,但我不知道发生了什么.任何帮助赞赏.

zay*_*uan 83

我有同样的问题.改变这一行:

beforeEach(module("app"))
Run Code Online (Sandbox Code Playgroud)

至:

beforeEach(angular.mock.module("app"))
Run Code Online (Sandbox Code Playgroud)

  • @DevAno1既有角度又有Browserify声明变量"模块",角度是一个功能,我相信Browserify是一个对象.在任何情况下,您都需要显式调用"angular.mock.module",以便使用正确的.HTH (2认同)

ynd*_*lok 24

Browserify使用Node-style require,其中module一个对象可用于导出功能:

console.log(module); // {exports: {}}
Run Code Online (Sandbox Code Playgroud)

angular-mocks.js尝试附加一个函数window.module,但这在Browserify/Node中是不可能的.

看一下角度模拟源,看起来角度模拟也附加了这个module功能angular.mock.因此module,您必须使用而不是使用全局对象angular.mock.module.