测试在Angular Service中订阅。使用done()是个好主意吗

时间:2018-10-30 11:04:31

标签: angular jasmine karma-runner

@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()测试可观察的订阅方法是否是一种好方法?还是有更好的方法来实现这一目标?

0 个答案:

没有答案