chrome websql数据库已关闭

时间:2015-11-20 03:16:40

标签: cordova google-chrome jasmine karma-runner web-sql

我很擅长使用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命令时,它显示了消息

  

'数据库已关闭'

Chrome screen shot

正如您在屏幕截图中看到的那样,它有' sync.db'。所以数据库就创建了。但是创建表并在其中放入一些数据的其他查询未正确执行。数据库已关闭。

如果您有关于症状的任何信息,我们将非常感激。

0 个答案:

没有答案