AngularJS路由测试未知提供程序

时间:2018-05-19 00:21:18

标签: angularjs testing jasmine karma-runner router

我试图像这样在路由器上设置茉莉花测试

it('should map routes to controllers and templates', function() {

    inject(function($route) {
        module('igt');

        expect($route.routes['/'].controller).toBe('mainPageCtrl');
        expect($route.routes['/'].templateUrl).toEqual('html/pages/main.html');

        // otherwise redirect to
        expect($route.routes[null].redirectTo).toEqual('/')
    });

});

和我的路由器文件是(只是因为它很长):

(function () {
    'use strict';

    angular
        .module('igt')
        .config(configure);

    configure.$inject = ['$routeProvider', '$httpProvider'];

    function configure($routeProvider, $httpProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'html/pages/main.html',
                controller: 'mainPageCtrl'
            })

我确实在karma.conf.js文件中注入了这些文件:

// list of files / patterns to load in the browser
files: [
    '../../node_modules/angular/angular.js',
    '../../node_modules/angular-mocks/angular-mocks.js',
    '../app.js',
    '../router.js',
    'unit/*.js'
],

现在,当我开始使用业力开始测试时,它给了我错误:

  

错误:[$ injector:unpr]未知提供商:$ routeProvider< - $ route

我的整个JS代码都封装在IIFE中,因此我甚至没有一个全局变量(我不知道它是否重要)。

为什么我有这个错误,我做错了什么?

1 个答案:

答案 0 :(得分:0)

将其更改为

describe('Testing Routes', function () {
beforeEach(module('myApp'));
it('should map routes to controllers and templates', function($route) {
  expect($route.routes['/'].controller).toBe('mainPageCtrl');