2013-11-14 2 views
1

У меня есть модульный тест, который выглядит как этот

describe('Interceptor: myInterceptor', inject(function($rootScope){ 
    var rootScope, routeParams = { id: null }; 

    beforeEach(module('MyApp', function ($provide) { 
     $provide.factory('$routeParams', function() { // mock $routeParams 
      return routeParams; 
     }); 

     rootScope = $rootScope.$new(); 
     $provide.value('$rootScope', rootScope);   // mock $rootScope 

    })); 
    .... 
})); 

Однако, когда я «впрыснуть (функция ($ rootScope) {..», как я показал выше , я получаю следующее сообщение об ошибке (с помощью кармы и PhantomJS):.

PhantomJS 1.9.2 (Mac OS X) Interceptor: myInterceptor encountered a declaration exception FAILED 
TypeError: 'null' is not an object (evaluating 'currentSpec.$modules') 
    at workFn (/dev/myapp/app/bower_components/angular-mocks/angular-mocks.js:2072) 
    at /dev/myapp/test/spec/interceptors/my-interceptor.js:67 
    .... 
+1

Мой вопрос потенциально связан: http://stackoverflow.com/questions/15416006/how-do-inject-rootscope-into-an-angularjs-unit-test –

ответ

5

Я не думаю, что инъекции работают при вызове describe я имел ту же самую ошибку, которую я решил, перемещая инъекцию из моего describe вызова к beforeEach звоните:

var rootScope; 
beforeEach(inject(function ($rootScope) { 
    rootScope = $rootScope.$new(); 
})); 

Вы можете иметь несколько beforeEach, так что просто добавить один над существующей beforeEach.

+2

, но по какой-то причине вы не можете сделать: beforeEach (ввод (функция ($ rootScope, $ обеспечивать) {...} –

Смежные вопросы