0

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ステートメントは、キーと値のパラメーターを指定しないと実行できないため、例外が発生します。

これらのタイプのシナリオを説明するためのテストを作成することは可能ですか?

4

1 に答える 1

0

最初に非同期例外テストをテストしてみませんか? 私が見る限り、あなたのテストは WebSQL とは何の関係もありません。

expect()また、を呼び出す前に、qunit async テストが必要になる場合がありますstart()。そうでない場合は、非同期ワークフローを待たずに、すべてのテストに合格します。

于 2012-11-02T06:13:20.010 に答える