这是我想测试的函数,但我不知道它是如何工作的。
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);
});
});
我正在加载的夹具文件看起来像这样:
<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>
给出如下错误:
期望({长度:0,prevObject: ({0: HTMLNode,上下文:HTMLNode,长度:1}),上下文:HTMLNode,选择器:'selectTypeWrapper'})有prop '禁用'。
预期未定义为false。
我对这些东西都不熟悉,我可能误解了一些东西。你能帮我写一下这个测试,让我了解如何处理这样的问题吗?
选择器错误;它应该是$("#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在控制台中是什么样子的。
我还检查了$.prop()
的文档,似乎jQuery 1.6有一些错误。因此,如果你正在使用那个版本,请尝试至少升级到1.6.1。
参见:
- 使用jQuery禁用/启用输入?