ada*_*lev 15 void promise typescript jestjs
你如何简洁地测试一个 void 异步函数是否用 jest 成功执行?我正在使用打字稿。
// foo.ts
export class Foo {
public async bar(): Promise<void> {
await someAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
如何测试new Foo().bar()不抛出错误?
Mr *_*zes 38
这是我发现的最语义化的方式。它甚至只是测试名称的翻译。
describe("Foo.bar()", () => {
test("Should not throw", async () => {
await expect(new Foo().bar()).resolves.not.toThrow();
});
});
Run Code Online (Sandbox Code Playgroud)
Promise 的优点是它根本不应该抛出,而是被解决或拒绝。另一方面,toBe()断言需要一个参数,即使Promise<void>TypeScript 中有一个参数。
那么如果没有传递参数(或者参数是空的)但它仍然被评估怎么办。论据是undefined。
test("Should resolve", async () => {
await expect(new Foo().bar()).resolves.toBe(undefined);
});
Run Code Online (Sandbox Code Playgroud)
测试对not.toThrow()我来说碰巧是假朋友,因为我的Foo.bar()没有抛出,也没有解决。