使用TestBed为具有异步服务的组件测试Angular2

时间:2016-10-30 21:55:09

标签: unit-testing angular typescript angular2-testing testbed

我正在使用Angular 2.1.0。

我有一个非常简单的异步服务:

@Injectable()
export class Service {

    protected str: Subject<string>;

    constructor() {
        this.str = <Subject<string>>new Subject();
    }

    getStream(): Observable<string> {
        return this.str.asObservable();
    }

    emit() {
        setTimeout(() => {
            this.str.next('Value 1');
            setTimeout(() => {
                this.str.next('Super Value 2');
            }, 10000);
        }, 10000);
    }
}

emit()模拟异步行为。和使用它的课程:

@Component({
    selector: 'my-app',
    template: '<div class="c" *ngIf="c">{{c}}</div>'
})
export class AppComponent {

    private c: string;

    constructor(private s: Service) { }

    ngOnInit() {
        this.s.getStream().subscribe(data => {
            this.c = data;
        });
        this.s.emit();
    }

}

我想为服务和组件编写单元测试。我已经阅读过angular.io教程。我还需要其他解释:(

对于测试组件我想:

  1. 测试开始时没有div.c
  2. check div.c content ='Value 1'
  3. check div.c content ='Super Value 2'
  4. 或者也许没有必要将4和5指向为双2和3?

    我知道,对于使用异步服务测试组件,有两个选项:使用存根服务或使用实际服务和间谍关键功能。在我的情况下,我应该如何编写两种方案的测试?

    如何测试服务?我想避免等待20秒测试结果。

0 个答案:

没有答案