Тестирование подписывайтесь в Angular Service. Это хорошая идея, чтобы использовать done () - PullRequest
0 голосов
/ 30 октября 2018
@Injectable()
export class MyServ {
public stream: ReplaySubject<any> = new ReplaySubject();

constructor (private subService: SubService) {}

protected init() {
    this.subService.on(this.updateElement, (event) => this.update(event), 
    false);
}

private update(event) {
/// do something
} 

}

У меня есть тест для этого класса с использованием фреймворка Jasmine. Итак:

beforeEach(() => {
TestBed.configureTestingModule{
 providers: [
 MyServ,
 {provide: SubService, useClass: SubServiceStub} 
 ]

}

describe('My Serv should', (done) => {
 let myServ;
 myServ.init();

 myServ.stream.subscribe(e => {
   expect(e).toEqual('foo');
   done();
 });

 mySubService.fire('foo');
});

});

Вообще говоря, этот код в порядке. Если я запускаю его один раз, тогда все в порядке, но если другие тесты выполняются параллельно, то тайм-аут превышает. Это хороший подход с помощью метода done () для проверки наблюдаемого метода подписки? Или есть лучший способ добиться этого ??

...