我是Jasmine的新手,正在寻找一个示例来测试一个非常简单的change事件处理程序。

我有以下代码:

$(document).ready(function() {
    $("#myId").change(function() {
         my.functionOne();
    });
});

my = {
    functionOne : function() {
        // do stuff
    }
};

如何测试执行事件处理程序时是否调用了functionOne?

谢谢。

最佳答案

看看有关Spies的Jasmine文档:http://pivotal.github.io/jasmine/#section-Spies

测试事件处理程序的最简单方法是:

describe('#myId behaviour', function(){
    //.. Your other setup here.

    it('calls functionOne on #myId change event', function(){
        spyOn(my, 'functionOne');

        // Force a change event to fire.
        $("#myId").trigger('change');

        expect(my.functionOne).toHaveBeenCalled();
    });

    // Other tests...
}

我不知道如何使用HTML和jQuery设置测试,但是这两个库也可能派上用场:
  • 在每次测试之前设置jQuery和HTML固定装置:https://github.com/searls/jasmine-fixture
  • 测试状态:https://github.com/velesin/jasmine-jquery
  • 10-06 15:55