Garrarufa
Garrarufa

Reputation: 1225

How to test triggered events?

Why does this test not pass?

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

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

My fixture file looks like this:

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

I get this error:

Error: Expected event [object Object] to have been triggered on #selectLanguage

Do I have to set a change listener before? (how would this work?)

Upvotes: 1

Views: 215

Answers (1)

marcel
marcel

Reputation: 3155

I don't know why your code does not work, but maybe you could try this:

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();
});

It will test the event indirectly.

Upvotes: 1

Related Questions