2017-03-01 76 views
0

我有一個單擊偵聽器的對象,並嘗試爲它編寫測試。我有問題,使用茉莉花expect(event).toHaveBeenTriggered(),似乎問題是e.preventDefault聲明。event.preventDefault和jasmine.toHaveBeenTriggeredOn不一起工作

監聽器:

$(document).on("click", "input", function (e) { 
    e.preventDefault(); 
    // do something 
}); 

測試:

describe("SomeTest", function() { 
    "use strict"; 

    beforeEach(function() { 
     setFixtures("<input />"); 
    }); 

    it("should have been triggered", function() { 
     var input = $('input'); 
     var spyEvent = spyOnEvent(input, 'click'); 
     $(input).click(); 
     expect(spyEvent).toHaveBeenTriggered(); 
    }); 

}); 

有沒有辦法讓toHaveBeenTriggered工作或禁用preventDefault進行測試?

回答

0

有特殊Matcher S IN jasmine-jquery這個toHaveBeenPreventedOn()toHaveBeenPrevented()

documentation

var spyEvent = spyOnEvent('#some_element', 'click') 
$('#some_element').click(function (event){event.preventDefault();}) 
$('#some_element').click() 
expect('click').toHaveBeenPreventedOn('#some_element') 
expect(spyEvent).toHaveBeenPrevented() 
相關問題