当我模仿对 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>