使用 fromEvent 流对 NgRx 效果进行单元测试
Unit Test NgRx effect with fromEvent stream
如何对监听 window 事件的 NgRx Effect 进行单元测试?
我知道如何使用操作流设置单元测试,因为这有详细记录,但我找不到用事件侦听器测试它的示例。
下面是我要单元测试的效果:
openKeyboard$ = createEffect(() => {
return fromEvent(window, 'ionKeyboardDidShow').pipe(mapTo(KeyboardActions.keyboardOpened()));
});
单元测试描述看起来像这样:
describe('openKeyboard$', () => {
it('dispatches keyboardOpened action on ionKeyboardDidShow window event', () => {
// how to test this?
});
});
感谢您的帮助。
我找到了一个解决方案,只需发送 window 事件即可,但我不确定这是否是一个优雅的解决方案
describe('openKeyboard$', () => {
it('dispatches keyboardOpened action on ionKeyboardDidShow window event', (done) => {
effects.openKeyboard$.subscribe((res) => {
expect(res).toEqual(KeyboardActions.keyboardOpened());
done();
});
const eventMock = new Event('ionKeyboardDidShow');
window.dispatchEvent(eventMock);
});
});
如何对监听 window 事件的 NgRx Effect 进行单元测试?
我知道如何使用操作流设置单元测试,因为这有详细记录,但我找不到用事件侦听器测试它的示例。
下面是我要单元测试的效果:
openKeyboard$ = createEffect(() => {
return fromEvent(window, 'ionKeyboardDidShow').pipe(mapTo(KeyboardActions.keyboardOpened()));
});
单元测试描述看起来像这样:
describe('openKeyboard$', () => {
it('dispatches keyboardOpened action on ionKeyboardDidShow window event', () => {
// how to test this?
});
});
感谢您的帮助。
我找到了一个解决方案,只需发送 window 事件即可,但我不确定这是否是一个优雅的解决方案
describe('openKeyboard$', () => {
it('dispatches keyboardOpened action on ionKeyboardDidShow window event', (done) => {
effects.openKeyboard$.subscribe((res) => {
expect(res).toEqual(KeyboardActions.keyboardOpened());
done();
});
const eventMock = new Event('ionKeyboardDidShow');
window.dispatchEvent(eventMock);
});
});