我有这样的功能(简化了代码以使此代码更具可读性)
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
您可以使用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);