セレクターを手動でテストしてから、それらを使用するコードに渡します。次に、それらを使用するコードを単体テストできます。セレクターをテストするだけの場合は、影響を受ける HTML にアクセスする必要があります。テストには、次のようなターゲットにする HTML を含めることができます。
test("selector works", function() {
var html = $('<input type="select"><option value=0/></input');
var result = $('option', html);
ok(result.count() == 1);
});
しかし、私はそうしません... セレクターをコードの端に配置して、デバッガーの下ですばやくアクセスしてステップスルーできるようにします。プロパティがそれらのセレクターである単純なクラスを作成します。次に、その単純なクラスをモック/スタブ化して、それらのセレクターに依存するすべてのコードを記述できるようにします。セレクターをテストしない理由は、対象となる HTML が ASP.NET コードによって生成され、javascript テストから取得するのが難しいためです。しかし、それらを謙虚なオブジェクト (" http://xunitpatterns.com/Humble Object.html") でラップしてから、その謙虚なオブジェクトに依存するコードをテストできます。以下は、テスト double に置き換えることができる単純なラッパー クラスです。
var createSelectWidget = function(rootSelector)
{
return {
userText : $('span', rootSelector),
inputList : $('option', rootSelector),
};
}
使用する依存性注入パターンが何であれ、以下のようにスタブできます。私のウィジェットには、値を読み取る選択入力と、いくつかの結果を書き込みたいスパンがあるとします。
var createSelectWidgetStub = function()
{
return {
userText : { text = function() {}},
inputList : { val = function() {}},
};
}
次に、依存関係を分離したいが、その依存関係との相互作用を気にしないテストで、このスタブを渡すことができます。依存関係との相互作用を検証したい場合は、JSMock でモックできます。入力リストとの相互作用を検証したい場合、モック化された 1 つの要素を含むスタブを準備します。
var selectMock = createSelectWidgetStub();
selectMock.inputList = mc.createMock(selectMock.inputList);