我發現使用jQuery或本地元素觸發器函數模擬實際的用戶事件越來越困難。例如,如果您有文本輸入並且您不希望用戶能夠添加角色,則可以使用事件中的jQuery規範化事件對象調用e.preventDefault()
。但是,無法以編程方式驗證此測試場景。模擬TDD JavaScript的用戶輸入
即使沒有調用preventDefault
,以下測試也會通過,因爲jQuery keydown觸發器不是「真實」事件。
input.val('test').trigger(jQuery.Event({
which: 68
});
expect(input).toHaveValue('test');
在不正確的代碼,此測試將失敗,因爲輸入應具有「TESTD」的值(圖68是關於「d」的字符代碼)。
有沒有人知道任何方法或庫來模擬real瀏覽器UI事件?
我試過這個,但他們keyCode和charCode一直保持爲0,儘管我在initKeyboardEvent中指定了它們。任何想法爲什麼?如果有一個圖書館可以爲A-spec瀏覽器做到這一點,那麼這將是非常棒的......如果我能克服這個障礙,可以自己寫一個。 –
@MattyF這似乎是來自WebKit上游代碼的Chrome的一個[bug](https://bugs.webkit.org/show_bug.cgi?id=16735),那個由'initKeyboardEvent'初始化的事件總是有'keyCode'和'charCode'設置爲0.我想你應該參考FF而不是基於WebKit的瀏覽器。 – Ghostoy