0

私はQUnitを初めて使用します。単純なJavaScript関数を選択して、それに対するqunitテストを記述しました。関数は次のとおりです。

function createSelectField(parent, elemid, value, collection) {
 var elem1 = document.createElement("select");
 elem1.id = elemid; 
      parent.appendChild(elem1);
 $("#" +  elemid).addOption(collection, false);
 if(value != null) {
         elem1.value = value ;
 }
 var oldvalue = value;
}

選択フィールドを作成し、それを親に追加し、(JQueryプラグインを使用して)いくつかのオプションを追加し、渡されたものにデフォルト値を設定します。この関数の2つのテストを作成しようとしています。 null、および値が文字列の場合は1つ。フィールドの値をチェックするためにそれをテストするという仮定。

これが私が試したことです:

module('Test createSelectField');
test('createSelectField() with no default value', function() {   
var parent = document.createElement("div");
createSelectField(parent, 'umbi', null, {"key1": "value1", "key2": "value2"});
var elem = $('#umbi');
equal(elem.val(), null, "No default value provided for the drop down");

}); 

test('createSelectField() with some default value', function() {   
var parent = document.createElement("div");
createSelectField(parent, 'bi', 'key1', {"key1": "value1", "key2": "value2"});
var elem = $('#bi');
equal(elem.val(), 'key1', "Default to key1 value");

}); 

まず、document.getElementByIdを使用して作成された要素を取得しようとしましたが、機能しませんでした。nullが返されました。JQueryセレクターを使用すると要素が取得されるようですが、値が表示されません(FireBugでデバッグ)(関数内で作成した要素が表示されるかどうかさえわかりません)。main関数から要素を返そうとしましたが、それでも機能しません。私は混乱し、憤慨しています。javascriptのユニットテストを書きたいのですが、これはほとんど諦めたくなります。ヘルプ?!

4

1 に答える 1

1

要素はページに挿入されていませんが、作成した div 内に挿入されているため、CSS クエリ$('#umbi')はドキュメント内のように機能しません。

Where$('#umbi', parent)は親コンテキストでそれを検索し、要素が DOM の一部でなくても機能します。

ただし、テストに関しては、単一のアイテムのみを挿入し、 を介してアクセスすることもできますdiv.childNodes[0]

于 2012-04-12T13:32:57.533 に答える