我正在尝试运行测试用例以测试Web服务玩笑的入口点 运行单元测试时,我面临一个问题。 无法监视异步函数,因为它是属性而不是函数。
我正在尝试测试是否在server.js文件中调用了运行功能
入口文件如下所示。
import config from 'config';
export default async function run() {
try {
/*
some code
*/
} catch (err) {
process.exit(1);
}
}
run();
测试文件如下所示
import run from '../server';
describe('server-test', () => {
it('run', async () => {
const start = require('../server');
const spy = jest.spyOn(start, run);
await run();
expect(spy).toBeCalled();
});
});
测试应该可以正常运行, 但在运行此测试时出现错误
Cannot spy the async function run() {
try {
/*
some code.
*/
} catch (err) {
process.exit(1);
}
} property because it is not a function; undefined given instead
答案 0 :(得分:0)
我花了很长时间研究这个错误,并在以下文章中结束了 How to spy on a default exported function with Jest?
因此,在不放弃默认关键字(即ES 6皮棉要求)的情况下,唯一的解决方案是使用“默认”一词代替“运行”。
使用这种方式。
const spy = jest.spyOn(start,'default');
应该可以。