【问题标题】:How to write unit test to Restangular with Jasmine?如何使用 Jasmine 为 Restangular 编写单元测试?
【发布时间】:2015-04-14 16:52:36
【问题描述】:

我知道如何为 GET 方法编写测试,但是其他方法呢?放置、修补、删除?

例如,这是我删除用户的服务方法:

removeOne: function(user) {
      var deferred;
      console.log(user);
      deferred = $q.defer();
      if (_.isUndefined(user.id) || _.isNaN(user.id)) {
        AlertsServ.logError(err);
        deferred.reject(err);
      } else {
        user.remove().then(function(result) {
          AlertsServ.logSuccess('Użytkownik został usunięty');
          return deferred.resolve(result);
        }, function(err) {
          AlertsServ.logError(err);
          console.log(err);
          return deferred.reject(err);
        });
      }
      return deferred.promise;
    } 

应该是这样的:

describe('DELETE /users/1', function() {
  beforeEach(function() {
    return $httpBackend.expect('DELETE', BACKEND_URL + '/users/1').respond(200, 'user1');
  });
  return describe('removeOne method', function() {
    return it('should get one user', function() {
      var user;
      user = {
        id: 1,
        routes: 'users'
      };
      return UserServ.removeOne(user);
    });
  });
});

但是如何定义用户呢?

P.S.:如何在 Jasmine/Karma Restangular 中定义基本 url?

【问题讨论】:

    标签: angularjs unit-testing jasmine karma-runner restangular


    【解决方案1】:

    现在,有了更多的单元测试经验,我认为我应该模拟 Restangular 并仅在使用参数正确调用 Reastangular 时进行测试。我不应该在这个测试中添加 $httpBackend。

    在单元测试中,我应该检查我的服务是否运行良好,而不是外部库。我说的对吗?

    【讨论】:

      【解决方案2】:

      Restangular Github issue page 上有一个有用的示例。

      如果您想添加expect() 来检查响应值,请不要忘记了解sanitizeRestangularOne()sanitizeRestangularAll() 函数。

      【讨论】:

        猜你喜欢
        • 2023-03-24
        • 2015-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-01
        • 2021-07-11
        • 1970-01-01
        相关资源
        最近更新 更多