如何测试函数是否使用 async 关键字调用

B.C*_*Ch. 5 javascript testing vue.js jestjs vuejs3

我想为我的 vue3 应用程序编写一个简单的测试,测试应该断言特定函数(在本例中为 updateRoute)在不同组件中使用异步声明

注意:根据我当前的项目,我无法将此函数隔离在单个文件中以使其可重用

例子:

const updateRoute = () => { doSomethig() }
Run Code Online (Sandbox Code Playgroud)

应该失败

尽管

const updateRoute = async () => { await doSomethig() }
Run Code Online (Sandbox Code Playgroud)

应该通过

测试库并不重要,它可以是 Jest 或其他任何东西

Est*_*ask 2

没有可靠的方法也没有理由检测async功能。对于返回 Promise 的函数,它与以下内容相同:

const updateRoute = () => {
  return doSomethig().then(() => {}) // Returns a promise of undefined
}
Run Code Online (Sandbox Code Playgroud)

应该测试是否updateRoute返回一个承诺,无论async是否返回。用笑话来说是:

expect(updateRoute()).toEqual(expect.any(Promise));
Run Code Online (Sandbox Code Playgroud)

至于强制,如果需要的话可以用ESLint规则await来处理。require-await