角形路由器插座茉莉花测 试

问题描述 投票:0回答:1

我通过Jasmine规范使用RouterTestingModule测试了Web应用程序导航,但嵌套fixture.whenStable().then(() => {})时遇到了麻烦。

例如:每当路由器出口更改其显示的组件时,我单击一个链接,然后单击另一个链接,然后单击另一个链接。到目前为止,这是我想测试的唯一方法(没有e2e测试)是遵循以下模式:

(component setup)
...
it('test name', async(() => {
 fixture.nativeElement.querySelector('.link').click();

 fixture.whenStable().then(() => {
   fixture.nativeElement.querySelector('.link2').click();

   fixture.whenStable().then(() => { 
     fixture.nativeElement.querySelector('.link3').click();

     fixture.whenStable().then(() => { 
        expect(fixture.nativeElement.querySelector('.element')).toBeTruthy();
     });
   });
 });
});

但这是一种疯狂的编写测试方式。我想尝试用fakeAsynctick()来尝试flush(),但是它没有帮助,因为没有出现(渲染)组件来代替router-outlet

是否有没有嵌套的promise结构即可完成测试的方法? fakeAsync能为我提供帮助吗?

angular typescript asynchronous jasmine router-outlet
1个回答
0
投票
it('test name', async () => { // use actual async function to be able to use await
 fixture.nativeElement.querySelector('.link').click();

 await fixture.whenStable();
 fixture.nativeElement.querySelector('.link2').click();

 await fixture.whenStable();
 fixture.nativeElement.querySelector('.link3').click();

 await fixture.whenStable()
 expect(fixture.nativeElement.querySelector('.element')).toBeTruthy();
});
© www.soinside.com 2019 - 2024. All rights reserved.