Redux-observable 의 테스트를 간결하게 만들기 위해서 조사한다.
marble 테스트에 hot, cold observable
의 개념이 활용된다.
hot observable
: 데이터가 observable 밖에서 생성된다.
cold observable
: 데이터가 observable 내에서 생성된다.
Observable
의 여러명의 구독자는 동일한 값을 얻을까?
const random = Math.random();
const observable = Rx.Observable.create((observer) => {
observer.next(random);
});
// 아래 두개는 같은 값을 구독한다.
observable.subscribe((data) => {
console.log(data);
});
observable.subscribe((data) => {
console.log(data);
});
const observable = Rx.Observable.create((observer) => {
observer.next(Math.random());
});
// 아래 두개는 다른 값을 구독한다.
observable.subscribe((data) => {
console.log(data);
});
observable.subscribe((data) => {
console.log(data);
});
hot observable
은 데이터가 외부에서 생성되므로, 구독자가 모두 같은 값을 얻는다.
cold observable
은 데이터가 내부에서 생성되므로, 구독자마다 다른 값을 얻는다.
See also. marble test https://rxjs-dev.firebaseapp.com/guide/testing/internal-marble-tests