2011-11-10 7 views
4

ノックアウトJSのユニットテストを行うためにKnockout JSとQUnitを使い始めました。私が実行している問題は、qunitテストのjavascriptファイルに複数のテストがあり、View Modelの定義を含むjavascriptファイルにリンクしているとします... 1つのテストでView Modelに対して行った変更テストモジュールで次のテストを開始するときにも表示されます。私は自分の状態がテスト間で自動的にクリアされるNUnit環境を使用していました。QUnitテストでのKnockoutJS ViewModelのリセット

誰かが指し示すことができる方法、パターン、または例があります。これは、ビューモデルを定義する最も良い方法を示し、各単位テストの開始時の状態をリセットしますか?

答えて

2

moduleという2番目のパラメータ(ライフサイクル)を使用していますか?そうでない場合、あなたは、このレベルでのようなもの、あなたのビューモデルをインスタンス化することができるはずです:私が読んで覚えていることから

module("foo", { 
    setup: function() { 
     this.model = instantiateModel(); 
    }, 
    tearDown: function() { 
     // execute reset here 
    }); 

test("bar", function() { 
    ok(this.model.hasSomething() !== null, "msg"); 
}); 

を、QUnitのTETSはsetuptearDownと同じスコープ内で実行されるので、任意のメンバーがで定義されていますsetupはその後のテストでもアクセスできます。

+0

OK ...これは間違いなく私が探していたようです。以前にノックアウトを使ったことがありますか?そのinstaniateModelクラスでko.applyBindings(viewModel)を呼び出す必要がありますか?それは物事を上げる2番目の呼び出しを生成するでしょうか? – Nick

+0

私はノックアウトを使用しましたが、単体テストは行っていません。 'instantateModel()'はあなたが実装しなければならないものです(あなたのカスタム設定ステップのいずれか) - すみません、それは明確です。 –

+4

はい、 'setup'で' ko.applyBindings'を呼ぶ必要があります。 'tearDown'では' ko.cleanNode'を使ってDOMノードへのバインディングをすべて削除する必要があります。 –

関連する問題