Я хочу убедиться, что после получения ожидаемого клика, он отписывается:
const documentListener = fromEvent(this.document, 'click').subscribe(e => {
// do some thing
documentListener.unsubscribe();
});
Я издеваюсь над документом, который был введен (@Inject(DOCUMENT) public document: Document
) и поместил spys на addEventListener иremoveEventListener.
Это мой макет:
class MockDocument {
private listeners = [];
createEvent(name: string) {
if (this.listeners.some(l => l.name === name)) {
this.listeners.find(l => l.name === name).f.call(new Event(name));
}
}
addEventListener(name: string, f: any) {
this.listeners.push({name: name, f: f});
}
removeEventListener(name: string, f: any) {
this.listeners.splice(
this.listeners.indexOf(l => l.name === name), 1);
}
}
Я думал, что fromEvent(this.document, 'click')
вызовет addEventListener
, но, очевидно, это не так.
Я думал, unsubscribe()
будет вызывать removeEventListener
для document
, но, по-видимому, это не так.
Я добавил все методы DOMDocument в свою модель (get activeElement()
, adoptNode()
..), но ни один из них не вызывается после unsubscribe()
.
Как проверить, что отписка вызвана?Как я могу издеваться над партией подписки?