如何用jasmine-jquery测试这个函数



这是我想测试的函数,但我不知道它是如何工作的。

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禁用/启用输入?

相关内容

  • 没有找到相关文章

最新更新