Допустим, у нас есть простой класс, который генерирует новое событие для субъекта RxJS в событии window.resize.Не обращай внимания, что, возможно, это слишком сложно.Ключевым моментом является то, что этот класс генерирует какое-то событие.
export class ResizeService {
private resizeSubject = new Subject();
public onResize(): Observable<Window> {
return this.resizeSubject.asObservable();
}
constructor(private eventManager: EventManager) {
this.eventManager.addGlobalEventListener('window', 'resize', (e) => {
this.resizeObject.next(<Window>event.target)
})
}
private onResize(event: UIEvent) {
this.resizeObject.next(<Window>event.target);
}
}
Вопрос в том, говоря о модульных тестах для этого класса, следует ли нам проверять, действительно ли будет получено новое событие, которое мы передаем объекту RxJS?клиентом, который вызвал метод onResize
.Примерно так:
it('should emit a value', fakeAsync(() => {
let subscriptionWorks = false;
fireWindowResizeEvent(new Event({width: 600; height: 400});
resizeService.onResize().subscribe(() => subscriptionWorks = true);
expect(subscriptionWorks).toBeTruthy();
})
)
А потом, если какой-нибудь разработчик изменит метод ResizeMethod на этот, тест провалится:
public onResize(): Observable<Window> {
return this.resizeSubject.asObservable().skip(10);
}