как провести юнит-тестирование observable.subscribe - PullRequest
0 голосов
/ 28 февраля 2020
ngOnInit() {
        let value = this.fun1(a, true);
        this.c = value;

        this.subscription = this.service.getObserver().subscribe((data:any) => {
            value = this.fun1(data, false);
            this.c = value;
        });
}

fun1(input1, input2) {
    if(input2) return input1;
    else       return 0;
}

Я пытаюсь протестировать приведенный выше код, я могу легко протестировать fun1. Я хочу проверить, имеет ли c правильное значение, когда getObserver () отправляет новые данные. Чтобы сделать это, я сделал следующий код.

it('should have a right c value', function(done) {

        inject([service], (service: Service) => {
            service.getObserver().subscribe((data: any) => {
            expect(component.c).toEqual(0)
            done();
          });
        })();
    });

, но я обнаружил, что он по-прежнему вызывает fun1 (3, true), а не fun1 (3, false), честно говоря, я не знаю, как это вычислить если кто-нибудь знает, что именно означает этот тест и как проверить следующую часть?

this.subscription = this.service.getObserver().subscribe((data:any) => {
            value = this.fun1(data, false);
            this.c = value;
        });
...