我接受了一些关于我使用(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函数之后测试结果,看看我的表中是否有一行。所以,我使用了result.rows.length
之类的东西,但我不知道如何使用Jasmine进行测试。
答案 0 :(得分:0)
完成。我只需要在d.resolve()
中放入一个与测试结果对象的结构相匹配的对象,即。
|
|
select: function () {
var d = _$q_.defer();
d.resolve({row : [] });
return d.promise;
}
|
|