0

私は自分のプロジェクトでよく使用する一連のノックアウト バインディングを作成していますが、これは大きくなり、テストが必要です。だから私はQunitでそれをやってみました、heresは基本的なテストです

module("Message binding");

test("When updating message observable with a splash message ", function () {
    var div = document.createElement("div");

    var message = ko.observable();

    ko.applyBindingsToNode(div, { message: message });

    message({ splash: "Test" });
});

編集:誰かが不自由なコメントを追加する前に:DIはまだAssertがないことを知っています。バインディングがライブ環境のように動作するようになると、それが起こります

バインディングを適用すると、バインディングの update メソッドが null 値で起動されます (オブザーバブルに null 値があるため、これは正しいです)

しかし、メッセージオブザーバブルmessage({ splash: "Test" });を設定すると、update メソッドは再び起動しません。もちろん、init を呼び出して自分でメソッドを更新することもできますが、KO 監視可能 API を使用していないため、テストの生産性が少し低下します。

4

1 に答える 1

3

ノックアウトは、要素がドキュメントの一部ではないことを検出した場合、要素のバインディングの依存関係を追跡するために使用される計算されたオブザーバブルを破棄します。

したがって、バインディングを適用する前に、要素をドキュメントに追加する必要があります。その後、テストの完了後に削除できます。

于 2012-08-22T11:56:09.623 に答える