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();
});
});
});
});
您需要調用['$ httpBackend.flush()'](https://docs.angularjs.org/api/ngMock/service/$httpBackend)以在被測試的方法被調用後刷新掛起的請求。 – dmahapatro
用沖水編輯原稿。但得到異常「TypeError:undefined不是一個函數」 –
我不知道測試用例是如何通過只查看它的一部分來編寫的。你可以把全部的測試用例和控制器都可行嗎? – dmahapatro