1

Я делаю один контроллер в Angularjs и пытаюсь проверить этот контроллер с помощью Jasmine. Я получил эту ошибку Не могу прочитать сообщение свойства 'undefined почему?Почему свойство message не определено?

Here - мой код.

контроллер

(function(){ 
    'use strict'; 
    angular.module('app.home').controller('homeCntrl',homeCntrl); 

    function homeCntrl(){ 
    var home=this; 
    home.clickbtn=function(){ 

     home.message='test'; 
     alert(home.message) 
    } 
    } 
})(); 

Тестирование

(function(){ 
    'use strict'; 
    describe('http controller test', function() { 

    var $rootScope, 
    $scope, 
    controller, 
    $q, 
    $httpBackend; 

    beforeEach(function() { 
    module('app'); 

    inject(function($injector) { 
     $rootScope = $injector.get('$rootScope'); 
     $scope = $rootScope.$new(); 
     controller = $injector.get('$controller')('homeCntrl', { 
     $scope: $scope 
     }) 


    }) 
    }) 




    describe('Init value', function() { 
    it('check name value', function() { 
    expect(controller.message).toBeUndefined(); 
    }) 

    }) 

    it('it should be true', function() { 
    expect(true).toBeTruthy(); 

    }) 
}) 

})(); 

любое обновление? Дернинг тестирование я получил эту ошибку ..? мы можем сделать тестирование этого контроллера? Каждая вещь отлично на угловой JS проблемы кода на тест code..only проверить appspec.js

+0

Ваш HTML должен быть 'нг-приложение =«app.home»' – gr3g

+0

предоставьте plunker ?? Зачем ? – user944513

ответ

1

Просто намек

приложение

(function() { 
'use strict'; 

function HomeController() { 
    var home = this; 
    home.title = 'Home'; 
} 

angular.module('home.controllers', []) 
    .controller('HomeController', HomeController); 
})(); 

тест

'use strict'; 

describe('home controller', function() { 

    var $controller; 
    var scope; 

    beforeEach(module('home.controllers')); 
    beforeEach(inject(function(_$controller_, $rootScope) { 
    $controller = _$controller_; 
    scope = $rootScope.$new(); 
    $controller('HomeController as home', {$scope: scope}); 
    })); 

    it('should have text = "Home"', function() { 
    expect(scope.home.title).toEqual('Home'); 
    }); 

}); 

в вашем случае тест должен быть как

scope.home.clickbtn(); 
expect(scope.home.message).toEqual('test'); 

Взгляните на http://www.bradoncode.com/tutorials/angularjs-unit-testing/ освоить модульное тестирование в угловом

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