jQueryフォーラムhttp://forum.jquery.com/topic/how-do-i-test-for-web-sql-exceptionsに投稿されましたが、ここで質問したいと思いました。開発中のWebSQLAPIに対して単体テストを作成しようとしています。私が説明しようとしているシナリオは、パラメーターが提供されていない場合です。以下はいくつかのサンプルコードです:
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");
});
キーと値のパラメーターが指定されていないため、例外がスローされることを期待しています。ただし、テストの実行が終了すると、例外はスローされないことが示されます。明示的に例外をスローしていませんが、動的に生成されたsqlステートメントは、キーと値のパラメーターを指定しないと実行できないため、例外が発生します。
これらのタイプのシナリオを説明するためのテストを作成することは可能ですか?