首页 > 解决方案 > 使用 Bootstrap 指令时,HttpTestingController expectOne 不起作用

问题描述

当我模仿对 Bootstrap 指令生成的元素的单击时,我无法在单元测试中模拟 HTTP 请求。

在这里,我有一个带有分页链接的组件。

@Component({
   template: `
       <ngb-pagination [collectionSize]="1" [pageSize]="1" [page]="1 (pageChange)="nextPg($event)"></ngb-pagination>
     `
})
export class QuestionComponent {
  public dataFromServer: string;

  constructor(
    private readonly httpClient : HttpClient
  ) { }

  public nextPg() {
    this.httpClient.get<string>('some_url')
      .subscribe(x => this.dataFromServer = x);
  }
}

而且我还进行了测试以验证 HTTP 调用。测试总是失败。

it('test', () => {
    fixture.detectChanges();

    const pageItem = fixture.nativeElement.querySelectorAll('.page-link')[1];
    pageItem.click();

    httpMock.expectOne('some_url');//Fails here
});

当我直接使用由指令生成的 HTML 时,一切都很好。

      <ul class="pagination">
        <li class="page-item disabled">
          <a class="page-link"></a>
        </li>
        <li class="page-item">
          <a class="page-link" (click)="nextPg()"> 1 </a>
        </li>
        <li class="page-item">
          <a class="page-link"></a>
        </li>
      </ul>

标签: angularunit-testingjasmineng-bootstraphttptestingcontroller

解决方案


推荐阅读