玩過了一下週圍,發現行之有效的解決方案:
import triggerEvent from 'trigger-event';
import component from './components/site-menu';
describe('triggering menu button',() => {
let menuToggleSpy;
beforeEach(() => {
menuToggleSpy = jasmine.createSpy('event');
component();
});
it('dispatches menu.toggle event',() => {
document.addEventListener('menu.toggle', menuToggleSpy);
const $trigger = document.querySelector('.js-trigger-main-menu');
triggerEvent($trigger, 'click');
expect(menuToggleSpy).toHaveBeenCalled();
});
});
基本上創建一個名爲「事件」新的間諜,將其添加爲事件處理程序,我的事件,然後驗證它被調用。
如果有更好的方法來做到這一點,我將非常樂意接受不同的答案。
此處定義的'menuToggleSpy'在哪裏?我收到一個「無法找到變量」的錯誤。 – adamdport
啊,'間諜=== menuToggleSpy'。我會更新我的答案。 –