1

嘗試單元測試Angular(Ionic)1應用程序時使用angular.mock.inject(...)函數會拋出以下錯誤。奇怪的是,沒有特定的錯誤信息,特別難以調試。無論我嘗試什麼,它似乎總是在沒有任何消息的情況下拋出相同的非描述性錯誤。Angular Mock Inject在使用Karma和Jasmine時沒有消息拋出錯誤

PhantomJS 2.1.1 (Linux 0.0.0) LoginController should pass FAILED 
    bower_components/angular/angular.js:4527:53 
    [email protected]_components/angular/angular.js:321:24 
    [email protected]_components/angular/angular.js:4487:12 
    [email protected]_components/angular/angular.js:4409:30 
    [email protected]_components/angular-mocks/angular-mocks.js:3160:60 
    [email protected]://localhost:9876/context.js:151:17 

刪除對angular.mock.inject()的呼叫允許測試通過。

這裏是有問題的測試:

describe('LoginController', function() { 

    var scope; 
    var controller; 

    beforeEach(angular.mock.module('mCommonJobs')); 
    beforeEach(angular.mock.inject(function($rootScope, $controller) { 
     scope = $rootScope.$new(); 
     controller = $controller('LoginController', { 
      $scope: scope 
     }); 
    })); 

    it('should pass', function() { 
    expect(true).toEqual(true); 
    }); 

}); 

我的涼亭依賴關係:

"dependencies": { 
    "angular-resource": "#1.5.0", 
    "ionic": "driftyco/ionic-bower#1.3.2", 
    "ngCordova": "^0.1.27-alpha", 
    "ng-cordova-oauth": "^0.3.0", 
    "ngstorage": "^0.3.11", 
    "angular-mocks": "^1.5.2" 
    }, 
    "resolutions": { 
    "angular": "~1.5.x" 
    } 

而且文件噶測試配置設置:

files: [ 
    //Angular source 
    'bower_components/angular/angular.js', 
    'bower_components/angular-animate/angular-animate.js', 
    'bower_components/angular-mocks/angular-mocks.js', 
    'bower_components/angular-resource/angular-resource.js', 
    'bower_components/angular-sanitize/angular-sanitize.js', 
    'bower_components/angular-ui-router/release/angular-ui-router.js', 
    'bower_components/ionic/js/ionic.bundle.js', 
    'bower_components/ng-cordova-oauth/dist/ng-cordova-oauth.js', 
    'bower_components/ngCordova/dist/ng-cordova.js', 
    'bower_components/ngCordova/dist/ng-cordova-mocks.js', 
    'bower_components/ngstorage/ngStorage.js', 
    //App code 
    'app/**/*.module.js', 
    'app/**/*.js', 
    'app/*.js', 
    //Test files 
    'test/**/*.test.js' 
], 
+0

你'角mocks.js'版本應該是完全一樣你的'angular.js'版本。你的bower'resolution' config強制Angular的版本是'1.5.x' – Phil

+0

@Phil我把'angular-mocks'的版本改成了'^ 1.5.2'。同樣的錯誤。我會更新這個問題。 – LanceLafontaine

+0

你是否重新運行'bower install'? – Phil

回答

1

這個問題被解決不包括files業務配置中的所有ionic.bundle.js,但通過指定包括其部件。

我也明確強制所有版本的角度相關的依賴是相同的版本(特別感謝Phil在評論。)。


最後,我bower.json有:

"dependencies": { 
    "angular-resource": "1.5.2", 
    "ionic": "driftyco/ionic-bower#1.3.2", 
    "ngCordova": "^0.1.27-alpha", 
    "ng-cordova-oauth": "^0.3.0", 
    "ngstorage": "^0.3.11", 
    "angular-mocks": "1.5.2" 
    }, 

和我的人緣配置看起來像:

files: [ 
    //Angular source 
    'bower_components/angular/angular.js', 
    'bower_components/angular-animate/angular-animate.js', 
    'bower_components/angular-mocks/angular-mocks.js', 
    'bower_components/angular-resource/angular-resource.js', 
    'bower_components/angular-sanitize/angular-sanitize.js', 
    'bower_components/angular-ui-router/release/angular-ui-router.js', 
    'bower_components/ionic/js/ionic.js', 
    'bower_components/ionic/js/ionic-angular.js', 
    'bower_components/ng-cordova-oauth/dist/ng-cordova-oauth.js', 
    'bower_components/ngCordova/dist/ng-cordova.js', 
    'bower_components/ngCordova/dist/ng-cordova-mocks.js', 
    'bower_components/ngstorage/ngStorage.js', 
    //App code 
    'app/**/*.module.js', 
    'app/**/*.js', 
    'app/*.js', 
    //Test files 
    'test/**/*.test.js' 
], 
相關問題