2013-12-20 3 views
3

я получаю следующее сообщение об ошибке: TypeError: undefined is not a function Проблема заключается в том, что общим является модуль и завод, и проблема на моей линииТест жасмина в Угловом для контроллера

var ctrl = $controllerConstructor("resetPasswordSentScreen", { $scope: scope, common: common}); 

Вот полный тест:

describe('resetPasswordSentScreen', function() { 

    var scope, $controllerConstructor; 


    beforeEach(module('common', 'app')); 

    beforeEach(inject(function($controller, $rootScope) { 
     scope = $rootScope.$new(); 
     $controllerConstructor = $controller; 
    })); 

    it('it should navigate to the correct url when backToLogin is called ', function (common) { 
     var ctrl = $controllerConstructor("resetPasswordSentScreen", { $scope: scope, common: common }); 
     var mocklocation = sinon.stub({ url: function() {}}); 
     expect(scope.backToLogin()).toBe(mocklocation.url); 
    }); 
}); 
+0

Не могли бы вы настроить для этого скрипт js? –

+0

Привет, Майкл и благодарю вас за быстрый ответ. http://jsfiddle.net/mariac/KvY5z/ –

+0

Похоже, что $ controller не вводится. Мой вопрос всегда таков: $ ИМЯ $ = $ injector.get ('$ controller') ("$ NAME $", {$ scope: $ scope}); – Malmi

ответ

3

Это не проблема, проблема в том, что вы не можете вводить вещи в свои функции, как в своем коде. Для инъекций вам необходимо позвонить inject, как вы это делали в beforeEach. Итак, если вы хотите ввести эту фабрику, вам необходимо:

it("message", inject(function(common) { 
... 
})); 

Существует то, как вы вводите. Это должно сработать.

+0

Спасибо @Jesus Rodriguez. Я исправляю проблему, но все еще имею проблемы с моими ссылками. –

+0

Код, который вы показываете, верен, единственной проблемой был инъекция. Вы уверены, что ваша ошибка на этой линии? Я построил пример с более или менее вашей идеей: http://plnkr.co/edit/uW4VMNJUqqZitCPLwkoS?p=preview –

+0

Привет, моя ошибка теперь после добавления в мое() инъекции: Ошибка: [$ injector : unpr] Неизвестный поставщик: cvAuthProvider <- cvAuth. И я объявляю общее: angular.module ('common'). Factory ('cvAuth', ['$ http', '$ cookieStore', cvAuth]); –

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