2015-12-09 5 views
1

Я новичок в угловых JS .. только построен контроллер образец .. и теперь хочу модульного тестирования это .. не знаю, как писать дразнить его в жасмин ..Mock Угловая JS контроллер Jasmine

TestApp. JS

var TestApp = angular.module('TestApp'); 
TestApp.controller('TestCtrl', function($scope) { 
    $scope.test = "test"; 
    }); 
})(); 

TestApp_Spec.js

var scope, ctrl; 

//you need to inject dependencies first 
beforeEach(inject(function($rootScope) { 
    $scope = $rootScope.$new();   
})); 

it('test value should be test', inject(function($controller) { 
    ctrl = $controller('TestCtrl', { 
     scope: $scope 
    }); 
    expect(scope.test).toBe("test"); 
})); 

Я использую самостоятельные версии жасмин и включены angular.min.js, angular.mocks.js, TestApp.js и TestApp_Spec.js в sepc_runner.html

Результаты испытаний не отображаются ..

Нужна помощь в написании правильных тестовых случаев.

+0

Что вы имеете в виду, не появляются? Вы не можете управлять ими? Тесты терпят неудачу? Рассматривая свой код, вы должны добавить beforeEach (module ('TestApp')); над другим beforeEach – Katana24

+0

С моим кодом, я получал странные ошибки .. сделал изменения кода, как предложено в нижнем ответе, он работал нормально. Спасибо, что ответили. –

ответ

0

В вашем коде есть некоторые исправления, например, вы не вставили модуль в свой тестовый костюм, поэтому жасмин не может найти controller.

Вы не прошли второй параметр, который является массивом в зависимости в ваш модуль, т.е. angular.module('TestApp',[]);

Here is the working plunker.

app.js

(function(){ 
var TestApp = angular.module('TestApp',[]); 
TestApp.controller('TestCtrl',["$scope",function(scope) { 
     alert(scope) 
     scope.test = "test"; 
    }]); 
})(); 

Тест костюм

var scope, ctrl; 
describe('MyApp', function() { 
    beforeEach(module('TestApp')); 
    //you need to inject dependencies first 

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

    it('test value should be test',function(){ 
    expect(scope.test).toBe("test"); 
    }); 
}); 
+0

Спасибо. Но что, если у моего контроллера есть другая зависимость .. (function() { var TestApp = angular.module ('TestApp', ['AnotherApp']) TestApp.controller ('TestCtrl', ["$ scope", function (объем) { предупреждение (сфера) scope.test = "test"; }]) })(); –

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