我很擅长使用Karma和Jasmine而我正在尝试测试在iOS上运行的基于离子/ cordova的应用程序。该应用程序使用cordova-sqlite-storage plugin
大量使用本地sqlite数据库。
如果cordova未定义,应用程序还有一个使用websql的代码,因为我的一名员工希望在浏览器上开发以加快速度。当我们使用ionic serve
命令时,它运行良好。
.factory('DB', [
'$q', '$cordovaSQLite', 'DB_CONFIG', '$http',
function($q, $cordovaSQLite, DB_CONFIG, $http) {
var self = this;
self.q = DB_CONFIG.q;
self.db = null;
self.init = function(name) {
var deferred = $q.defer();
if (window.cordova) {
self.db = $cordovaSQLite.openDB({ name: name });
deferred.resolve();
}else{
console.log ("non cordova");
self.db = window.openDatabase(name, '1', 'database', 1024 * 1024 * 100);
self.query("SELECT count(*) as cnt from sqlite_master WHERE type = 'table'").then(function(r){
console.log (r.rows[0].cnt);
if(r.rows[0].cnt > 1){
deferred.resolve(true);
}else{
self.devinit(name).then(function(){
deferred.resolve(true);
});
}
}, function (r) {
console.log (r.toString());
});
}
return deferred.promise;
};
所以我尝试在测试中使用相同的方法。但我遇到了奇怪的症状,无法找到有关它的信息。 当我开始使用上述代码的测试时,测试不能很好地工作。尽管在ionic.serve命令
上运行良好,但要测试的初始化代码并未完全执行当我尝试在chrome上运行sql命令时,它显示了消息
'数据库已关闭'
正如您在屏幕截图中看到的那样,它有' sync.db'。所以数据库就创建了。但是创建表并在其中放入一些数据的其他查询未正确执行。数据库已关闭。
如果您有关于症状的任何信息,我们将非常感激。