0

何らかの理由で、これら 2 つの仕様は合格していますが、2 番目の仕様は、サービスからの非同期データを使用して、テンプレート内で補間をテストしています。コールバック関数を async でラップする必要がないのはなぜですか?

describe('SaangComponent', () => {
  let component: SaangComponent;
  let fixture: ComponentFixture<SaangComponent>;
  let compiled: HTMLElement;
  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ SaangComponent ],
      providers: [
        {provide: GetSomeService, useValue: getSomeServiceMock}
      ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(SaangComponent);
    component = fixture.componentInstance;
    compiled = fixture.debugElement.query(By.css('h1')).nativeElement;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });

  it('should update the h1 attribute with the title', () => {

    fixture.detectChanges();
    const expectedText = compiled.innerHTML;
    expect(expectedText).toEqual('lord');
  });
});

const getSomeServiceMock = {
  getSomeData() {
    return Observable.of({title: 'lord'});
  }
};
4

2 に答える 2

0

コンポーネントの ngOnInit ライフサイクル フックで「getSomeData」が呼び出されると仮定します。その場合、使用しているモック応答は、コンポーネントの作成時に既に使用されています。

于 2018-02-06T19:04:50.190 に答える