簡體   English   中英

角度測試未知提供程序

[英]Angular test Unknown provider

我目前正在嘗試測試view1(home.js),在view1中,我使用了從view1_test.js移至app.js級別的過濾器和指令。 我所有的測試都通過了,現在引用過濾器或指令的所有內容現在都無法通過測試。 我想知道我是否需要創建一個app_test.js或是否有一種方法可以修復測試以使其正常工作? 以下是我正在談論的示例。

app.js

'use strict';

// Declare app level module which depends on views, and components
angular.module('myApp', [
    'ngRoute',
    'myApp.home',
    'ngAnimate',
    'ui.bootstrap',
    'ui.date'
]).
config(['$routeProvider','$httpProvider','$locationProvider', function($routeProvider) {
    $routeProvider.otherwise({redirectTo: '/home'});
}])
.filter('upper', function () {
    return function (input) {
        return input.toUpperCase();
    };
})

view1.js(home.js)

'use strict';

angular.module('myApp.home', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/home', {
        templateUrl: 'home/home.html',
        controller: 'HomeCtrl'
    });
}])

view1_test.js(home_test.js)

'use strict';
describe('myApp.home module', function () {
    beforeEach(module('myApp.home'));
}

describe('Filter: upper', function () {
    var upperFilter;

    beforeEach(inject(function (_upperFilter_) {
        upperFilter = _upperFilter_;
    }));

    it('should be able to uppercase an entire input', function () {
        expect(upperFilter('hello')).toBe('HELLO');
        expect(upperFilter('hello world')).toBe('HELLO WORLD');
    });

});

在運行此測試時。 我得到這個:

Chrome 47.0.2526(Windows 7 0.0.0)myApp.home模塊過濾器:upper應該能夠將整個輸入全部大寫FAILED錯誤:[$ injector:unpr]未知提供程序:upperFilterProvider <-upperFilter http://errors.angularjs。 org / 1.4.7 / $ injector / unpr?p0 = upperFilterProvider%20%3C-%20upperFilter在C:/webroot/member_portal/app/bower_components/angular/angular.js:68:12在C:/ webroot / member_portal /位於Object.getService的app / bower_components / angular / angular.js:4289:19 [作為獲取](C:/ webroot / member_portal(C:/webroot/member_portal/app/bower_components/angular/angular.js:4437:39) /app/bower_components/angular/angular.js:4294:45在Object.invoke(C:/webroot/member_portal/app/bower_components/angular/angular.js:4437:39)在getService(C:/ webroot / member_portal /位於Object.workFn的app / bower_components / angular / angular.js:4469:13)(C:/webroot/member_portal/app/bower_components/angular-mocks/angular-mocks.js:2438:20)錯誤:聲明位置在窗口.inject.angular.mock.inject(C:/ webroot / member_portal / app / 套件中的bower_components / angular-mocks / angular-mocks.js:2409:25)。 (C:/webroot/member_portal/app/home/home_test.js:766:20)。 (C:/webroot/member_portal/app/home/home_test.js:763:5)在C:/webroot/member_portal/app/home/home_test.js:3:1 TypeError:upperFilter不是Object的函數。 (C:/webroot/member_portal/app/home/home_test.js:771:20)Chrome 47.0.2526(Windows 7 0.0.0):執行54之1(1失敗)(跳過53)錯誤(0.327秒/ 0.005)秒)

您為每個文件聲明了2個不同的模塊

-> angular.module('myApp', [ ...

view1.js- -> angular.module('myApp.home', ['ngRoute'])

在您的home_test.js ,應該將myApp模塊而不是myApp.home注入,因為您已將其移至該模塊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM