AngularJS - WebSQL - 在 Karma 中使用 Jasmine 对返回多个承诺的对象进行测试

AngularJS - WebSQL - Tests in Karma with Jasmine on object returning multiple promises

我对正在使用的服务 (angular-websql) 进行了一些单元测试,但遇到了一个棘手的问题。

此服务 - $webSql - 将创建一个数据库,它是一个具有多种功能的对象:

$scope.db = $webSql.openDatabase('lastUser', '1.0', 'Data storage of last connected user', 2 * 1024 * 1024);
$scope.db.select(tableName, whereClause).then(function (result) {...});
$scope.db.insert(tableName, whereClause).then(function (result) {...});
$scope.db.update(tableName, whereClause).then(function (result) {...});
$scope.db.del(tableName, whereClause).then(function (result) {...});

And so on...

在我的单元测试中,我模拟了如下服务:

 mock$webSql = {
  openDatabase: function () {
    return {
      createTable: function () {
        var d = _$q_.defer();
        d.resolve();
        return d.promise;
      },
      insert: function () {
        var d = _$q_.defer();
        d.resolve();
        return d.promise;
      },
      del: function () {
        var d = _$q_.defer();
        d.resolve();
        return d.promise;
      },
      update: function () {
        var d = _$q_.defer();
        d.resolve();
        return d.promise;
      },
      select: function () {
        var d = _$q_.defer();
        d.resolve();
        return d.promise;
      }
    };
  }
};

问题是我正在我的控制器中评估我的承诺结果,例如,我正在测试 select 函数之后的结果,看看我的 [=24= 中是否有一行].所以,我正在使用 result.rows.length 之类的东西,但我不知道如何用 Jasmine 对其进行测试。

完成。我只需要在 d.resolve() 中放入一个与测试结果对象结构匹配的对象,即。

|
|
select: function () {
    var d = _$q_.defer();
    d.resolve({row : [] });
    return d.promise;
}
|
|