2016-07-11 17 views
0

私は、既存のangularjsコードベースでユニットテストをセットアップしようと時間を費やしました。私は、角度の文書からの提案された実装と比較して、私たちのコードで問題を1つ奇妙に固定していると信じています。コントローラをKarmaテストに注入できません

var app= angular.module(...)でモジュールをインスタンス化しますが、例題では、angular.module(...)が見つかりました。これは、以下に示すbeforeEachのモジュールを別の方法で参照する必要がありますか?

バージョン詳細:

  • AngularJSのv1.2.7
  • 角度-モックのv1.2.7

myController.js:

app.controller('myController', function (
    $scope, 
    $rootScope, 
    $location, 
    $window, 
    globalServices, 
    $routeParams, 
    $sce) { 
    ... 
} 

Sample.spec.js:

describe('myController', function() { 

    beforeEach(module('app')); 

    describe('tests', function() { 
    var scope, controller; 

    beforeEach(inject(function($controller) { 
     scope = {}; 
     controller = $controller('myController', { $scope: scope }); 
    }));  

    it('should define controller', function() { 
     expect(controller).toBeDefined(); 
    }); 

    }); 
}); 
私は、次のエラーが表示さ

//jshint strict: false 
module.exports = function(config) { 
    config.set({ 

    basePath: './', 

    files: [ 
     'Scripts/angular.min.js', 
     'Scripts/angular-mocks.js',  
     'Scripts/angular-route.min.js', 
     'Scripts/angular-resource.js', 
     'Scripts/angular-cookies.min.js', 
     'Scripts/ui-sortable.js', 
     'Scripts/angular-strap.min.js',  
     'Scripts/jquery.min.js', 
     'tinymce/tinymce.min.js',  
     'Scripts/ui-bootstrap-tpls-0.4.0.js', 
     'tinymce/jquery.tinymce.min.js', 
     'app/directives/adapt/adapt.js', 
     'app/app.js', 
     'app/controllers/myController.js', 
     'app/tests/Sample.spec.js'  
    ], 

    autoWatch: true, 

    frameworks: ['jasmine'], 

    browsers: ['PhantomJS'], 

    logLevel: config.LOG_DEBUG, 

    plugins: [ 
     'karma-phantomjs-launcher', 
     'karma-jasmine', 
     'karma-junit-reporter', 
     'phantomjs-polyfill' 
    ], 

    reporters: ['progress'] 

    }); 
}; 

var app = angular.module('app', [ 
    'ngRoute', 
    'ui.bootstrap', 
    'ui.tinymce', 
    'ngResource', 
    'ngCookies', 
    ... 
]); 

karma.conf.js app.js Error: $injector:modulerr Module Error Failed to instantiate module app due to: {1}

を私は、コントローラのコードをコメントアウトした場合、module('app')エラーは発生しません。

ありがとうございました。私はこれで壁に当たった。

+0

あなたのモジュールをどのように作成すればよいのか分かりません。私はちょっとちょっとそれを見てみましょう。何らかのエラーメッセージが表示されますか? – Maccurt

+0

より良い方法は 'beforeEach'を使用することです – batmaniac7

+0

あなたのコントローラコードも表示できますか? – Maccurt

答えて

1

モジュールの依存関係がすべて解決されていることを確認してください。この問題は、ロードされていないサービスを注入しようとしているときに発生します。

+1

良いですが、どうですか?私はチェックし、すべてが含まれているようです –

+0

@ M.オクタビオ - 私は知っていたと思います。私は賞金が何らかの助けになると思った。私が解決した唯一の方法は、すべてを1つずつチェックすることでした。 – Ryan27

関連する問題