gpt4 book ai didi

angularjs - 在 karma jasmine 中测试 $http.post 方法

转载 作者:行者123 更新时间:2023-12-02 23:03:28 27 4
gpt4 key购买 nike

我的 Controller 中有一个功能如下:

Controller

'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);
});
};
});
});

我如何对其进行单元测试,以便模拟并调用 post 方法。目前我有以下内容,其中不包括后调用的成功部分。

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();
});
});

});
});

最佳答案

乍一看,您似乎正在调用保存函数,并且您的函数名为 saveWorkflowTRIGGERS。我认为这就是为什么你会收到“TypeError:未定义不是一个函数”

关于angularjs - 在 karma jasmine 中测试 $http.post 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795523/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com