Как протестировать этот сервисный метод НЕ вызывал subject.next () - PullRequest
0 голосов
/ 07 июля 2019

Представьте, что у меня есть служба с методом, который может или не может отправлять следующее значение субъекту. Примерно так:

@Injectable()
export class MyService {
    public onChange: Subject<string> = new Subject();
    check(send: boolean) {
        if (send) {
            this.onChange.next('hey!');
        }
    }
}

Я могу легко проверить случай с service.check(true) - просто подпишитесь на onChange, но как я могу проверить, что onChange.next() в service.check(false) НЕ БЫЛО вызвано?

edit / my-service.spec.ts

import { TestBed } from '@angular/core/testing';
import { MyService } from './my-service.service';

describe('MyService', () => {
    let service: MyService;

    beforeEach(() => {
        TestBed.configureTestingModule({ providers: [MyService] });
        service = TestBed.get(MyService);
    });
    it('can load instance', () => {
        expect(service).toBeTruthy();
    });
    it('should send notification with check(true)', () => {
        service.onChange.subscribe(
            msg => expect(msg).toEqual('hey!'),
            fail
        );
        service.check(true);
    });
    it('should not send notification with check(false)', () => {
        // ???? how to check that this.onChange.next() was not called?
        service.check(false);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...