在 Angular 7 单元测试中,是否有一种方法可以避免在同时使用 async 支持和 async..await 关键字时使用双重 async(async()) 语法?
我是 Angular 的新手,但是是经验丰富的程序员,我很难确定我的首选测试风格。我希望在测试中安全地使用 async..await,并且我理解下面的语法。然而,当指导对现代 JavaScript 和/或 async..await 概念不熟悉的开发人员时,双重 async(async()) 语法会使他们感到冗余和困惑。服务中抛出的异常会导致在实际测试之外报告失败,这很难跟踪。
以下其中一个似乎更好:
1. it() 应该自动支持 async..await 并包装我的回调函数,以便我不必考虑它。 2. it() 应该采用可选的函数参数 (i.e., async 或 fakeAsync),将包装我的回调函数。 3. 应该存在 it() 变体 ita() 和 itfa(),它们将使用适当的 async 辅助程序包装我的回调。 4. it() 使用 async 包装我的回调,另外一个 itf() 将使用 fakeAsync 包装我的回调。
我是否遗漏了某个现有概念或语法?是否有更好的替代方案?
我是 Angular 的新手,但是是经验丰富的程序员,我很难确定我的首选测试风格。我希望在测试中安全地使用 async..await,并且我理解下面的语法。然而,当指导对现代 JavaScript 和/或 async..await 概念不熟悉的开发人员时,双重 async(async()) 语法会使他们感到冗余和困惑。服务中抛出的异常会导致在实际测试之外报告失败,这很难跟踪。
以下其中一个似乎更好:
1. it() 应该自动支持 async..await 并包装我的回调函数,以便我不必考虑它。 2. it() 应该采用可选的函数参数 (i.e., async 或 fakeAsync),将包装我的回调函数。 3. 应该存在 it() 变体 ita() 和 itfa(),它们将使用适当的 async 辅助程序包装我的回调。 4. it() 使用 async 包装我的回调,另外一个 itf() 将使用 fakeAsync 包装我的回调。
我是否遗漏了某个现有概念或语法?是否有更好的替代方案?
import { async } from '@angular/core/testing';
describe('MyService', () => {
let service: MyService;
...
it('should get data', async( async() => {
// arrange
let expectedData = { answer: 42 };
// act
let data = await service.getDataAsync();
// assert
expect(data).toEqual(expectedData);
} ));
})
async()
重命名为waitForAsync()
,或许更容易理解一些了? - Coderer