这是我想测试的功能,但我不知道它是如何工作的。
conflictModalCancel: function () {
this.$(":disabled").prop("disabled", false);
},
到目前为止我做了什么:
describe("function conflictModalCancel", function(){
beforeAll(function(){
loadFixtures('addvehicle.html');
});
it ("should set property disabled", function(){
view.conflictModalCancel();
expect($("selectTypeWrapper")).toHaveProp("disabled");
expect($("selectTypeWrapper").prop("disabled")).toBe(false);
});
});
我加载的fixture文件看起来像这样:
<div id="selectTypeWrapper" type="disabled" disabled="true">
<div id=".panel">
<div id=".panel-collapse"></div>
</div>
</div>
<div id=":disabled"></div>
<select id="selectLanguage"></select>
它给出了这些错误:
预期({length:0,prevObject:({0:HTMLNode,context:HTMLNode,length:1}),context:HTMLNode,selector:'selectTypeWrapper'})使prop'禁用'。
预期未定义为假。
我是所有这些东西的新手,我可能误解了一些东西。你能帮我写一下这个测试,让我了解如何处理这些问题吗?
答案 0 :(得分:1)
你的选择器错了;它应该是$("#selectTypeWrapper")
,因为您正在按ID查找元素。
我的另一个猜测是prop("disabled", false)
删除了属性。
要验证这一点,请将功能更改为:
var node = $(":disabled");
console.log('before', node[0].outerHTML);
node.prop("disabled", false);
console.log('after', node[0].outerHTML);
这将显示控制台中DOM的外观。
我还检查了documentation for $.prop()
,似乎jQuery 1.6有一些错误。因此,如果您正在使用该版本,请尝试升级到至少1.6.1。
另见: