如何测试触发事件?

时间:2015-05-20 11:42:36

标签: javascript jquery dom testing jasmine

为什么这个测试没有通过?

beforeEach(function(){
    loadFixtures('addvehicle.html');
});

it ("should trigger change event on #selectLanguage", function(){
    spyOnEvent('#selectLanguage', 'change');
    $('#selectLanguage').trigger('change');
    expect('change').toHaveBeenTriggeredOn('#selectLanguage');
});

我的夹具文件如下所示:

<div id="selectTypeWrapper"></div>
<select id="selectLanguage"></select>

我收到此错误:

  

错误:已触发的预期事件[object Object]   #selectLanguage

我以前是否必须设置更改侦听器? (这将如何工作?)

1 个答案:

答案 0 :(得分:1)

我不知道为什么你的代码不起作用,但也许你可以试试这个:

var changeSpy;

beforeEach(function(){
    loadFixtures('addvehicle.html');
    changeSpy = jasmine.createSpy('handleChange() spy');
    $('#selectLanguage').change(changeSpy);
});

it ("should trigger change event on #selectLanguage", function(){
    $('#selectLanguage').change();
    expect(changeSpy).toBeDefined();
    expect(changeSpy).toHaveBeenCalled();
});

它将间接测试该事件。