AngularJS业力茉莉花测试无法找到路线提供者

时间:2015-11-26 16:27:53

标签: angularjs unit-testing

我有角度脚本post.js并测试它post_test.js。

我的post.js文件

var Post = angular.module('Post', []);

Post
    .config(['$routeProvider', function ($routeProvider) {
        $routeProvider
            .when('/post', {
                controller: 'PostCtrl',
                templateUrl: 'src/posts/partials/post.html'
            })
        ;
    }]);

和我的post_test.js文件:

'use strict';

describe('Post module', function() {

    beforeEach(module('Post'));

    describe('Post controller', function(){

        it('should ....', inject(function($controller) {
            //spec body
            var PostCtrl = $controller('PostCtrl');
            expect(PostCtrl).toBeDefined();
        }));

    });
});

karma.conf.js我加载

files: [
    'app/components/angular/angular.js',
    'app/components/angular-route/angular-route.js',
    'app/components/angular-mocks/angular-mocks.js',
    'app/app.js',
    'app/src/**/*.js' // post.js, post_test.js
],

一切似乎都没问题,但是角度会返回此错误:

Error: [$injector:modulerr] Failed to instantiate module Post due to:
Error: [$injector:unpr] Unknown provider: $routeProvider

我不知道为什么。我在angular-route.js之前加载post.js。我检查过并正确加载。在定义alert(1)之前我已经放了$routeProvier,我在控制台中看到了它。所以这个文件正确加载,但在下一个文件 - 测试文件中它仍然无法正常工作。

1 个答案:

答案 0 :(得分:1)

ngRoute模块也应加载。

替换:

var Post = angular.module('Post', []);

使用:

var Post = angular.module('Post', ['ngRoute']);