我试图重构一些单元测试,但我发现循环内的expect不起作用。我正在遍历枚举。我有以下代码:
对此有什么解决方案或变通办法吗?
it('should block approval of ads if status is not in pending revision', async () => {
mockAdsRepository.findOne = jest.fn(() =>
Promise.resolve({ ...adsDto, status: Status.REJECTED }),
);
await expect(service.approve(1, 1)).rejects.toThrow(BadRequestException);
mockAdsRepository.findOne = jest.fn(() =>
Promise.resolve({ ...adsDto, status: Status.UNPUBLISH }),
);
await expect(service.approve(1, 1)).rejects.toThrow(BadRequestException);
// error trigger, working
// mockAdsRepository.findOne = jest.fn(() =>
// Promise.resolve({ ...adsDto, status: Status.PENDING_REVISION }),
// );
// await expect(service.approve(1, 1)).rejects.toThrow(BadRequestException);
//refactor
Object.keys(Status).map(async (key) => {
if (Status[key] !== Status./*changing this value for error triggers not working*/ ) {
mockAdsRepository.findOne = jest.fn(() =>
Promise.resolve({ ...adsDto, status: Status[key] }),
);
await expect(service.approve(1, 1)).rejects.toThrow(
BadRequestException,
);
}
});
});
字符串
1条答案
按热度按时间omqzjyyz1#
我认为,你的例子中的问题是map不处理异步操作,所以你在循环结束时有几个pending状态的promise。你应该等待所有来自map的promise被解析/拒绝。
你可以使用这个函数来处理所有的promise。
字符串
第一个月