确保已在笑话中等待函数的方法

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

我有这样的功能(简化了代码以使此代码更具可读性)

import Adapter from "adapter-package";

const adapter = new Adapter();

async powerOn(): Promise<MyClass> {
  const myClass = new MyClass();
  await adapter.powerOn();
  return myClass;
}

如您所见,我正在await的呼叫中使用adapter.powerOn()。现在,我正在使用Jest编写单元测试。

it("can power on the adapter", async () => {
  const spy = jest.spyOn(Adapter.prototype, "powerOn");
  const myClass = await MyClass.powerOn();
  expect(myClass).toBeInstanceOf(MyClass);
  expect(spy).toHaveBeenAwaitedFor();
              ^^^^^^^^^^^^^^^^^^^^
  spy.mockRestore();
}, 10000);

我强调的测试不存在,但这是我想要测试的。我可以知道是否已等待调用的方法吗?

编辑:

[詹金斯会指出,不清楚我要问的是什么。基本上,我想确保在我的函数得到解决时,由adapter.powerOn()返回的Promise也已得到解决。因为我已经遇到一个问题,我不小心删除了await之前的adapter.powerOn()

async powerOn():承诺{const myClass = new MyClass();adapter.powerOn();返回myClass;}

所以当我用以下命令调用函数时>

await powerOn();

该函数已解决,但它没有等待对adapter.powerOn()的调用,因此我不得不花一些时间进行调试。因此,我想确保在adapter.powerOn()完成时可以解决await powerOn()

我有一个类似的功能(简化了代码以使该代码更易读)从“ adapter-package”导入适配器; const adapter = new Adapter();异步powerOn():Promise {... ...>

async-await jest
1个回答
0
投票

您可以使用expect.resolves

it("can power on the adapter", async () => {
  const spy = jest.spyOn(Adapter.prototype, "powerOn");
  await expect(MyClass.powerOn()).resolves.toBeInstanceOf(MyClass);
  spy.mockRestore();
}, 10000);
© www.soinside.com 2019 - 2024. All rights reserved.