2017-04-11 9 views
1

このアプリでは、通過しているテストがたくさんありますが、ui-routerを統合した後はすべて失敗します。 TypeError: undefined is not an object (evaluating '$httpBackend.verifyNoOutstandingExpectation')のようなエラーが表示されます。およびTypeError: undefined is not an object (evaluating '$rootScope.$digest')。一度統合すると、テストで注入されたものはもう機能しなくなります。カルマジャスミンテストはすべてui-routerを統合した後に失敗します

$stateProvider, $stateParams or $urlRouteProviderを注入すると、テストは失敗します。私がそれらを注入しなければ、それらは合格する。

必要な設定がありますか?誰もがなぜ前の注射のすべてが突然すべて存在しないのか知っていますか?

エラー例

[email protected]/vendor/angular/angular.js:403:24 
[email protected]/vendor/angular/angular.js:4880:12 
[email protected]/vendor/angular/angular.js:4802:30 
[email protected]/vendor/angular-mocks/angular-mocks.js:3163:60 
app/vendor/angular/angular.js:4921:53 
TypeError: undefined is not an object (evaluating '$rootScope.$digest') in app/core/test/sideBarDirTest.js (line 63) 
app/core/test/sideBarDirTest.js:63:23 

カルマコンフィグ

basePath: '', 
    frameworks: ['jasmine'], 
    files: [ 
     'app/vendor/jquery/dist/jquery.js', 
     'app/vendor/angular/angular.js', 
     'app/vendor/angular-resource/angular-resource.js', 
     'app/vendor/angular-mocks/angular-mocks.js', 
     'app/core/app.js', 
     'app/core/envConfig.js', 
     'app/core/sideBarDir.js', 
     'app/core/app.js', 
     'app/core/test/*.js', 
     '**!/!*.html', 
     {pattern: 'app/core/**/*.json', watched: true, served: true, included: false} 
    ], 
    exclude: [ 
     'app.js', 
     '**/gulpfile.js' 
    ], 
    reporters: ['progress', 'coverage', 'junit'], 
    preprocessors: { 
     'app/**/*.html': ['ng-html2js'], 
     'app/core/**/!(*Test|*test).js': 'coverage', 
    }, 

    ngHtml2JsPreprocessor: { 
     stripPrefix: 'app/', 
     moduleName: 'html' 
    }, 

    junitReporter: { 
     outputFile: 'coverage/test-results.xml', 
     suite: '' 
    }, 

    coverageReporter: { 
     type: 'lcov', 
     dir: 'coverage/' 
    }, 
    port: 9876, 
    colors: true, 
    config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 
    logLevel: config.LOG_INFO, 
    autoWatch: false, 
    browsers: ['PhantomJS'], 
    captureTimeout: 10000, 
    singleRun: true 
+0

は、依存関係として 'ngMock'をリストしていますか? – hughes

+0

はい私はあります。 ngRouteを使用していたときに問題はありませんでした。 –

+0

あなたのテストで実際のHTTPリクエストに依存していますか? – hughes

答えて

1

私は、根本的な原因はいくつか不足しているモジュールに気づきました。 ui-routerの私の統合には、私が思っていた以上にカルマの設定に追加するファイルが増えたようです。

私がこの質問をしたとき、エラーメッセージは非常に基本的であり、それが頭痛の原因でした。私はKarmaの設定でテストするブラウザとしてChromeを使用してこの問題を解決しました。このスイッチはすぐに私に問題を示しました。明らかに、PhantomJSは、エラーメッセージのジューシーな部分を取り除きます(実際の角度エラーを読んでいます)。

もしあなたが渡したすべてのテストに無作為に失敗した場合は、すべてを取得していないかどうかを確認するためにChromeブラウザに切り替えることをお勧めします。

カルマテストにあなたのアプリで使用されている
+0

Chromeランナーを使用すると、デバッグに本当に役立ちます。実際の質問が全く解決できるかどうかはわかりません – Husterknupp

関連する問題