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;
}
|
|
我对正在使用的服务 (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;
}
|
|