Angularjs 模拟角服务数据响应

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

我有一个Api服务,负责控制我的所有http请求。获取、发布、放置、删除

我正在尝试编写一些单元测试,但在下面的场景中遇到了一个问题

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就是我要找的。。。我可以在测试中定义它吗?或者你建议在哪里定义它?好吧,你可以在任何地方定义它。大多数情况下,它是在一个单独的模块中定义的,仅用于此,然后从每个
循环之前的
中追加它,以覆盖特定的依赖项。