25

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

  })

})

require ステートメントは、依存関係を処理する Browserify によって処理されますが、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")')

これを理解しようとかなりの時間を費やしましたが、何が起こっているのかわかりません。どんな助けでも感謝します。

4

2 に答える 2

24

Browserify は Node-styleを使用しますrequire。ここで、moduleは機能をエクスポートするために使用できるオブジェクトです。

console.log(module); // {exports: {}}

angular-mocks.js は関数を にアタッチしようとしますがwindow.module、それは Browserify/Node では不可能です。

angular-mocks sourceを見ると、angular-mocks もmodule関数を にアタッチしているようangular.mockです。したがって、グローバル オブジェクトを使用する代わりに、 を使用moduleする必要がありますangular.mock.module

于 2014-06-20T22:05:05.447 に答える