Jasmine. Тестируем AngularJS контроллеры

jasmine-banner-wide

Благодаря использованию DI (dependency injections) тестирование контроллеров в AngularJS довольно простое дело. Для себя я выбрал Jasmine, хотя можно использовать и Mocha + Chai.

[codesyntax lang=»javascript»]

(function () {
    'use strict';
    
    describe('My Module', function () {
    	describe('Controllers', function () {
    		var scope,
                q;

		// injections
		beforeEach(inject(function ($rootScope, $q) {
			scope = $rootScope.$new();
                	q = $q;
		}));
		describe('resourcesCtrl', function () {
                var resourcesDataServiceMock,
                    deferred;

                // define the mock resourcesDataService
                beforeEach(function () {
                    resourcesDataServiceMock = {
                        getAll: function () {
                            deferred = q.defer();
                            return deferred.promise;
                        }
                    };
                });

                // injections
                beforeEach(inject(function ($controller) {        
                    $controller('resourcesCtrl', {
                        $scope: scope,
                        resourcesDataService: resourcesDataServiceMock
                    });
                }));
               
                describe('getResources', function () {
                    it('should get resources from storage and set them to the resources scope property', function () {
                        scope.getResources();

                        deferred.resolve(['']);
                        scope.$digest();

                        expect(scope.resources.length).toEqual(1);
                    });
                });
            });
		
    	});
    });
})();

[/codesyntax]

Запись опубликована в рубрике JavaScript/JQuery с метками , . Добавьте в закладки постоянную ссылку.

Один комментарий: Jasmine. Тестируем AngularJS контроллеры

  1. David says:

    И что это такое? статья? урок? или просто косок кода без пояснений?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *