Отказаться от модульного теста на fromEvent (this.document, 'click') - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу убедиться, что после получения ожидаемого клика, он отписывается:

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().

Как проверить, что отписка вызвана?Как я могу издеваться над партией подписки?

...