0

发布在 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 语句。

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

4

1 回答 1

0

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

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

于 2012-11-02T06:13:20.010 回答