发布在 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 语句。
是否可以编写测试来解释这些类型的场景?