如何测试Web SQL异常?

时间:2012-10-31 17:22:22

标签: qunit web-sql

发布在jQuery论坛上http://forum.jquery.com/topic/how-do-i-test-for-web-sql-exceptions,但我想在这里问一下。我正在尝试针对我正在开发的Web SQL api编写单元测试。我想要考虑的场景是何时没有提供参数。以下是一些示例代码:

Web SQL帮助程序对象:

var sql = function () {
return {
    getDb: function () {            
        return openDatabase("sampleDb", "1.0", "sampleDb", 5 * 1024 * 1024);
    },

    initDb: function () {
        var db = this.getDb();
        if (db) {
            db.transaction(function (tx) {
                tx.executeSql("CREATE TABLE IF NOT EXISTS SampleTable (Key TEXT UNIQUE NOT NULL,Value TEXT NOT NULL)");
            });
        }
    },

    insertRecord: function (key, value) {
        var db = this.getDb();
        if (db) {
            db.transaction(function (tx) {
                tx.executeSql("INSERT INTO SampleTable (Key, Value) VALUES (?, ?)", [key, value],
                    function () {
                    },
                    function (tx, error) {
                        throw (error.message);
                    });
            });
        }
    }
}

}();

以下是我的单元测试:

asyncTest("test1", function () {
raises(function () {
    sql.initDb();
    sql.insertRecord(null, null);
    start();
},
"exception expected");

});

我期待抛出异常,因为没有提供key和value参数;但是,当测试完成执行时,它表示不会抛出任何异常。虽然我没有明确地抛出异常,但是会引发异常,因为在没有提供键和值参数的情况下无法执行动态生成的sql语句。

是否可以编写测试来考虑这些类型的场景?

1 个答案:

答案 0 :(得分:0)

为什么不首先测试异步异常测试?据我所知,你的测试与WebSQL无关。

在调用expect()之前,同步qunit异步测试可能需要start()。如果没有,则只需通过所有测试,无需等待异步工作流程。

相关问题