2014-05-21 8 views
3

У меня есть функция в мой контроллер, как показано ниже:

контроллер

'use strict'; 

define(['angular', 'app/controllers'], function (angular, controllers) { 
    console.log("Loading controller:"); 

    controllers.controller('MyCtrl', function ($scope, $window, $timeout, $log, $location, $route, $routeParams, $http) { 

    $scope.saveWorkflowTRIGGERS = function(saveCall) { 
     var url = BASE_APP_PATH + "trigger/save"; 

     $http.post(url, $scope.triggers).success(function(data) { 

      console.log("savedTriggers"); 
      console.log(data); 
     }); 
    }; 
    }); 
    }); 

Как я модульное тестирование это так, что метод пост издевались и вызывается. В настоящее время у меня есть нижеследующее, которое не охватывает часть успеха для почтового звонка.

define(['angular-mocks', 'jquery', 'app/app'], function(angularmocks, $, app){ 
describe('Unit: Testing Controller', function(){ 
    var ctrl; 
    var scope; 
var rootScope; 
var mockHttp; 

BASE_APP_PATH='some path/'; 

beforeEach(angular.mock.module('myApp')); 

beforeEach(angular.mock.inject(function($rootScope, $window, $httpBackend){ 
    scope = $rootScope.$new(); 
    rootScope = $rootScope; 

    mockHttp = $httpBackend; 

})); 

it ('should save triggers', function(){ 

    inject(function ($controller) { 
     ctrl = $controller('MyCtrl', { 
      $scope: scope 
     }); 

     var url = BASE_APP_PATH + 'trigger/save'; 

     mockHttp.whenPOST(url, 'mockData').respond(201, 'success'); 
     mockHttp.expectPOST(url).respond(201, 'success'); 
     scope.save(true); 
     mockHttp.flush(); 
    }); 
}); 

}); 
}); 
+0

Вам нужно будет вызвать ['$ httpBackend.flush()'] (https://docs.angularjs.org/api/ngMock/service/$httpBackend), чтобы очистить ожидающие запросы после вызова метода тестирования. – dmahapatro

+0

Отредактировано оригинал с флешем. но получение исключения «TypeError: undefined не является функцией» –

+0

Я не знаю, как тестовый пример написан, только глядя на его часть. Можете ли вы использовать весь тестовый пример и контроллер, возможно? – dmahapatro

ответ

0

В первый взгляд, кажется, что вы звоните ворота функции и ваша функция называется saveWorkflowTRIGGERS. Я думаю, именно поэтому вы получаете «TypeError: undefined не является функцией»

0

После вызова сохранения вы должны иметь scope.$digest(), который будет разрешать ожидающий http-вызов.

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

  • Нет связанных вопросов^_^