发布在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语句。
是否可以编写测试来考虑这些类型的场景?
答案 0 :(得分:0)
为什么不首先测试异步异常测试?据我所知,你的测试与WebSQL无关。
在调用expect()
之前,同步qunit异步测试可能需要start()
。如果没有,则只需通过所有测试,无需等待异步工作流程。