Angularjs 模拟角服务数据响应
我有一个Api服务,负责控制我的所有http请求。获取、发布、放置、删除 我正在尝试编写一些单元测试,但在下面的场景中遇到了一个问题Angularjs 模拟角服务数据响应,angularjs,unit-testing,Angularjs,Unit Testing,我有一个Api服务,负责控制我的所有http请求。获取、发布、放置、删除 我正在尝试编写一些单元测试,但在下面的场景中遇到了一个问题 self.Api.post('/myEndpoint/action/', actionData) .then(function(resp){ result = _.get(resp, 'data.MessageList'); if(resp.status = 200 && result) { setA
self.Api.post('/myEndpoint/action/', actionData)
.then(function(resp){
result = _.get(resp, 'data.MessageList');
if(resp.status = 200 && result) {
setActionResults(resp.data);
}
});
我想在我的单元测试中模拟resp。我该怎么办?我必须在这里模拟httpBackend服务吗?我可以用其他方法吗?使用
httpBackend
是一种方法,模拟应用程序发出的每个请求就可以了。但是,您也可以模拟整个服务,并使用模拟服务而不是原始服务进行单元测试。不管怎样,httpBackend
处理这一点(对于http请求服务)要比使用与原始服务相同的接口创建新服务简单得多。但在某些情况下,您可能需要控制您的服务正在做什么,因此您必须使用服务模拟
例如:
angular.module('myApp')
.service('DataService', function ($http) {
this.getData = function () {
return $http.get('http://my.end.point/api/v1/data')
.then(function (response) {
return response.data;
});
};
});
angular.module('myAppMock')
.service('MockedDataService', function ($q) {
this.getData = function () {
return $q.resolve({ data: 'myData' }); // you can add a delay if you like
}
});
使用
httpBackend
是一种方法,模拟应用程序发出的每个请求将很好地工作。但是,您也可以模拟整个服务,并使用模拟服务而不是原始服务进行单元测试。不管怎样,httpBackend
处理这一点(对于http请求服务)要比使用与原始服务相同的接口创建新服务简单得多。但在某些情况下,您可能需要控制您的服务正在做什么,因此您必须使用服务模拟
例如:
angular.module('myApp')
.service('DataService', function ($http) {
this.getData = function () {
return $http.get('http://my.end.point/api/v1/data')
.then(function (response) {
return response.data;
});
};
});
angular.module('myAppMock')
.service('MockedDataService', function ($q) {
this.getData = function () {
return $q.resolve({ data: 'myData' }); // you can add a delay if you like
}
});
那个mockedDataService就是我要找的。。。我可以在测试中定义它吗?或者你建议在哪里定义它?好吧,你可以在任何地方定义它。大多数情况下,它是在一个单独的模块中定义的,仅用于此,然后从每个循环之前的
中附加它,以覆盖一个特殊的依赖项。mockedDataService就是我要找的。。。我可以在测试中定义它吗?或者你建议在哪里定义它?好吧,你可以在任何地方定义它。大多数情况下,它是在一个单独的模块中定义的,仅用于此,然后从每个
循环之前的中追加它,以覆盖特定的依赖项。