В модульном тесте Angular 7 есть ли способ избежать двойного синтаксиса async( async(){} )
при объединении асинхронной поддержки с ключевыми словами async..await
?
Я новичок в angular, но я опытныйпрограммист, и у меня проблемы с посадкой на мой предпочтительный стиль тестирования.
Я хотел бы безопасно использовать async..await
в тестах, и я понимаю синтаксис ниже.Однако при обучении разработчиков новым для современного javascript и / или концепции async..await
двойной синтаксис async(async())
является избыточным и вводящим в заблуждение.Они оставляют внешний асинхронный.Исключения, возникающие в службе, приводят к тому, что сообщения о сбоях выходят за пределы фактического теста, который трудно отследить.
Кажется, что одно из следующего было бы лучше:
it()
должно магически поддерживать async..await
и обернуть мой обратный вызов в async()
, чтобы у меня не былочтобы подумать об этом. it()
должен принимать необязательный параметр функции (т. е. async
или fakeAsync
), который обернет мой обратный вызов. it()
вариаций ita()
и itfa()
должен существовать, который обернет мой обратный вызов соответствующим асинхронным помощником. 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);
} ));
})