我有一个视图,命中端点与另一个用户共享资源。端点看起来像:
http://mysite/api/{resource}/{Id}/transfer
这是一个PUT请求,我发送的有效负载如下:
{ destination: Id,
data: [Ids of resources that are being transferred]
}
我不明白如何使用模拟器为api创建测试?端点本身只返回200.当我在UI中手动检查它时,我必须转到具有destinationId的页面,并查看该资源是否存在。
据我所知,你可以创建一个
when("GET", {url: url}).respond(...);
但就像我说我的服务只返回200.我真的不知道如何创建假装转移东西的模拟服务,因为如果它实际上没有转移资源,就像它在一个实际的测试环境,那么服务就不起作用了。
答案 0 :(得分:0)
你可以像下面那样模拟http。 这是我的控制器:
var app = angular.module("angularModule",[]);
app.controller(“angularController”,函数($ scope,$ http){
$scope.getAddress = function () {
$http.get("/address").success(function (data) {
$scope.Address = data;
});
};
$scope.saveUser = function(user) {
$http.post("/addUser", user).success(function() {
});
};
});
我编写单元测试以检查上述控制器Get和POST方法为:
describe("Test Angular Hello World", function () {
var scope;
var controller;
var httpBackend;
beforeEach(module("angularModule"));
beforeEach(inject(function ($rootScope, $controller, $httpBackend) {
httpBackend = $httpBackend;
$httpBackend.expectGET("/userName").respond("Sankalpa");
scope = $rootScope.$new();
controller = $controller("angularController", { $scope: scope });
$httpBackend.flush();
}));
it("Should get user address from server", function () {
httpBackend.expectGET("/address").respond("Horana");
scope.getAddress();
httpBackend.flush();
expect(scope.Address).toEqual("Horana");
});
it("Should save user", function () {
var user = {id:1, name:'test'};
httpBackend.expectPOST("/addUser", user).respond(200);
scope.saveUser(user);
httpBackend.flush();
});
});
希望这个帮助:)