Javascript QUnit-基本测试-检查字段值

Javascript QUnit-基本测试-检查字段值,javascript,jquery,qunit,Javascript,Jquery,Qunit,我对昆特很陌生。选择了一个简单的JavaScript函数来编写针对它的qunit测试。以下是函数: function createSelectField(parent, elemid, value, collection) { var elem1 = document.createElement("select"); elem1.id = elemid; parent.appendChild(elem1); $("#" + elemid).addOption(collect

我对昆特很陌生。选择了一个简单的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;
}
它创建一个select字段,将其附加到父字段,使用JQuery插件向其添加一些选项,并将默认值设置为传入的值。我正试图为这个函数编写两个测试,一个是当value为null时,另一个是当value为某个字符串时。测试的假设是检查字段的值

以下是我尝试过的:

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调试的值,我甚至不确定它是否提供了我在函数中创建的元素。我甚至尝试从我的主函数返回元素,但仍然不起作用。我感到困惑和困惑。我想编写单元测试javascript,但这几乎让我想放弃。救命啊

因为您的元素没有插入页面中,而是插入了您创建的div中,所以CSS查询$'umbi'不能像在文档中一样工作

其中$'umbi',parent将在父上下文中搜索该元素,即使该元素不是DOM的一部分,它也会工作


但对于您的测试,您只能插入一个项目,您也可以通过div.childNodes[0]访问它。

谢谢您的帮助,这让我向前迈进了几步。现在我还有一个问题,当我传入一个像“key1”这样的值时,它进入函数中的if块,看起来它是在元素上设置值,但是当我在FireBug中调试时,该值仍然存在,这也是我在测试中得到的。我怀疑你函数中的值分配是错误的。您创建了一个select元素,它从来没有值jQuery$select.val。请让它听起来像有值一样,而是包含该值的选项,select只能为您提供selectedIndex。因此,您真正想要为要选择的默认选项指定的是elem1.selectedIndex这是一个数组键,但是在您的案例中,这些选项是作为对象传递的。事实上,既然您提到了,我还注意到在调试模式下,$+elemid.addOptioncollection,false;未将我的收藏添加到选择选项列表中。现在,我应该说我从UI测试了这段代码,它工作得很好,对我来说编写测试用例更有教育意义。因此,我认为在从测试脚本执行时,自定义插件可能还有一些其他问题。无论如何,我会继续努力。再次感谢你。