我们如何使用jasmine
测试Observable.fromEvent
@ViewChild('d')
private inputDatePicker: NgbInputDatepicker;
this.subscription = Observable.fromEvent(document, 'click').subscribe((event: KeyboardEvent) => {
if (!this.eRef.nativeElement.contains(event.target)) {
this.inputDatePicker.close();
}
});
ngOnDestroy() {
this.subscription.unsubscribe();
}
我正在使用ngb-date-picker
并使用fromevent
来抓住文档点击并关闭日期选择器
答案 0 :(得分:4)
我认为在这种情况下你最好的猜测首先不是将文档作为全局文档,而是将其注入到component / directive / injectable中(angular提供了一种方法,通过使用 - > @Inject(DOCUMENT)来提供它)。此时,您可以通过自己的实现来模拟它。从那里你可以添加这样的方法到你的模拟
{
addEventListener: jasmine.createSpy('addEvent').and.callFake((eventName: string, cb: () => void) => {
imageListeners[eventName] = cb;
}),
removeEventListener: jasmine.createSpy('removeEvente').and.callFake((eventName: string) => {
delete imageListeners[eventName];
})
}
(适用于您的情况,这只是我为类似情况编写的一些代码)
当你需要触发你的方法时
addEventListener.calls.argsFor
等等。 我在假设您使用茉莉作为测试套件的情况下编写了这个答案,但应该与其他套件类似,只是方法不同。 希望它有所帮助:)