1

Я пытаюсь издеваться функцией, которая возвращает обещание, используя spyOn со следующим кодом:Не удается прочитать свойство «spyOn» в нуле - Дразнящее обещание в тесте angularJS единичного

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

    ctrl = $controller('BillingCtrl', { 
     $scope: scope, 
     $q: q 
    }); 
    })); 

    it('should have overlay off when cancel modal is shown', 
    function() { 

     var deferred = q.defer(); 
     deferred.resolve(); 

     spyOn(scope, 'confirmModal').andReturn(deferred.promise); 

     scope.cancelSubscription(""); //scope.confirmModal is called within here. 
     expect(scope.overlayOn).to.equal(true); 
    }); 

Это бросает эту ошибку:

Chrome 37.0.2062 (Mac OS X 10.9.2) Unit: BillingController "before each" hook: workFn FAILED 
    TypeError: Cannot read property 'spyOn' of null 

scope.confirmModal Определенно существует в этом контексте, поскольку я могу console.log его.

Любые указатели будут оценены!

+0

просто интересно, это to.equal или toEqual? –

+0

@RohanChandane to.equal в Jasmine – Greg

+0

Я думаю, что 'spyOn' следует использовать в' beforeEach', а не в 'it'. – yarons

ответ

0

Я понял.

Mocha противоречил Жасмину (я использовал их оба).

Функция spyOn отлично работает, когда я удаляю Mocha.

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