2016-07-26 2 views
0

Im пишет тесты с кармой + жасмин. Посмотрите на это:AngularJS и Jasmine, inject() вызывает ошибку

describe("users module", function(){ 

    var scope, controller; 

    beforeEach(function() { 
     module('users'); 
    }); 

    it("should work", function(){ 

    }); 

}); 

Приведенный выше код работает, и я получаю этот выход

PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 SUCCESS (0.038 secs/0.001 secs) 

Что мне действительно нужно сделать здесь тестирует, что контроллеры модуля. Поэтому я добавил:

describe("users module", function(){ 

    var scope, controller; 

    beforeEach(function() { 
     module('users'); 
    }); 

    describe("Users list", function(){ 
     beforeEach(inject(function ($rootScope, $controller) { 
      scope = $rootScope.$new(); 
      controller = $controller('ctrl', { 
       '$scope': scope 
      }); 
     })); 

     it("should work", function(){ 

     }); 
    }); 
}); 

Когда я добавить второй beforeEach блок я получаю сообщение об ошибке впрыска. Свалка ошибки огромного, он начинает так:

Error: [$injector:modulerr] http://errors.angularjs.org/1.5.7/$injector/modulerr?p0=users 

Я пытался высушить код как можно больше, но даже ниже приводит к тем же ошибкам:

describe("users module", function(){ 

    var scope, controller; 

    beforeEach(function() { 
     module('users'); 
    }); 

    describe("Users list", function(){ 
     beforeEach(inject(function() { 

     })); 

     it("should work", function(){ 

     }); 
    }); 
}); 

Что неправильно с моим кодом?

== EDIT ==

Если я перейти к не-уменьшенная угловой версии я получаю читаемый дамп ошибки, которая выглядит следующим образом:

public/src/bower_components/angular/angular.js:4632:53 
     [email protected]/src/bower_components/angular/angular.js:321:24 
     [email protected]/src/bower_components/angular/angular.js:4592:12 
     [email protected]/src/bower_components/angular/angular.js:4514:30 
     [email protected]/src/bower_components/angular-mocks/angular-mocks.js:3067:60 
     [email protected]://localhost:9876/context.js:151:17 
+0

Вы должны открыть веб-клиент кармы и осмотреть его с помощью devtools для получения более читаемых стеков. По умолчанию вы можете найти его по адресу: http: // localhost: 9876/debug.html. Мое предположение о том, что ваш контроллер зависит от службы, которая не определена в модуле users. И что вы также должны вводить эту зависимость в свои тесты. – Pjetr

+1

Uhm, но он падает, даже если я пытаюсь НЕ вводить контроллер. – brazorf

+0

ах, но он по-прежнему работает, когда вы не помещаете описание в? Тогда я могу только предложить использовать Chrome для отладки ошибки, потому что это похоже на то, что она превзошла мои знания :) – Pjetr

ответ

2

Оказалось, я неправильно модульной зависимости.

Урок: если угловой говорит, что у него есть проблемы с созданием модуля users, это, скорее всего, правда, а вы должны сначала изучить эту ошибку.

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