2015-03-03 3 views
0

Во-первых, это моя первая попытка запустить тесты в моих приложениях. Следующий бит кода предназначен для проверки результата функции контроллера ($ scope.getActiveClients(), эта функция делает запрос на получение $ http) для возвращаемого объекта: $ scope.activeClients не определен во время моего тестового прогона. До сих пор я пытался пробеги() и waitsFor(), а также сделали функцию(), как указано в 2.0 документации жасмин, чтобы не дали никаких результатов и получить эту Сообща ошибку:Jasmine test async функция углового контроллера

TypeError: undefined is not a function

describe 'myController', -> 
    beforeEach module('myApp') 
    $controller = undefined 
    beforeEach inject((_$controller_) -> 
    $controller = _$controller_ 
    return 
) 
    describe '$scope.activeClients', -> 
    it 'gets all active clients', -> 
     $scope = {} 
     controller = $controller('myController', $scope: $scope) 
     $scope.getActiveClients() 
     expect($scope.activeClients).toEqual xxx 
     return 
    return 
    return 

любых указатели будут очень высоко оценили

ответ

0

Вам нужно высмеять $ http-вызовы $ httpBackend, тогда вы сможете завладеть своими HTTP-вызовами и протестировать асинхронные вызовы. Я не знаю coffescript, но могу показать вам в js.

describe('myController', function(){ 
var $scope, controllerService, httpMock; 
beforeEach(module('myApp')); 
beforeEach(inject(function ($rootScope, $controller, $httpBackend) { 
    $scope = $rootScope.$new(); 
    controllerService = $controller; 
    httpMock = $httpBackend; 
})); 

it("gets all active clients", function() { 
    //mock http calls 
    httpMock.expectGET("/getActiveClients").respond({data: 'clientTestData'}); 
    ctrl = controllerService('myController', {$scope: $scope}); 
    $scope.getActiveClients(); 
    httpMock.flush(); 
    expect($scope.activeClients).toEqual xxx 
}); 
}); 
+1

хотя ваш ответ не на 100% точный, он указал мне в правильном направлении, спасибо. – Jax

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