如何使用Jasmine在单击事件中测试函数调用

时间:2014-12-19 09:48:04

标签: javascript jasmine jasmine-jquery

我对Jasmine很新,我试图测试一个非常简单的场景

正在测试的代码

$(function () {

    $("#add_distribution_list").click(function () {
        CommonNs.Utils.setWindowLocationHRef("hello.html");
    });

});

夹具

<input type='button' value='Add' id='add_distribution_list'/>

测试

describe("Distribution List Page", function () {
    beforeEach(function(){
        loadFixtures('button.html');
        spyOn(CommonNs.Utils, 'setWindowLocationHRef');
    });

    it("button redirects to action2", function () {
        $('#add_distribution_list').click();
        expect( CommonNs.Utils.setWindowLocationHRef).toHaveBeenCalled();
    });
});

结果

Expected spy setWindowLocationHRef to have been called.

我的SpecRunner.html导入了jquery,jasmine-jquery以及CommonNs.Utils所在的实用程序文件。

如何断言CommonNs.Utils上的方法已被调用?

1 个答案:

答案 0 :(得分:3)

我希望您需要在“add_distribution_list”上触发点击事件。使用.trigger()

$('#add_distribution_list').trigger('click');

然后使用茉莉花间谍监视被调用的方法。

使用jasmine 2.x测试dom事件有一个很好的帖子here,并且有一个关于使用茉莉花间谍的问候表here

关于茉莉花测试的.trigger也存在一个类似的问题,也可能有助here