如何在Jest与TypeScript环境下测试Azure HTTP Trigger函数?
报错含义
这个报错是Jest在解析GetAnnouncements.test.ts里的模块导入语句时,找不到你指定的defaultContext模块。核心原因是你用了无路径的裸导入写法require('defaultContext'),Jest默认只会到node_modules目录下查找同名模块,不会主动检索你项目test目录下的本地文件。Jest的提示也明确说明它可以识别到同目录下的./defaultContext.js,只是你的导入路径写法不符合解析规则。
修复方案
- 方案1:修改导入路径(最推荐,无需改配置)
把测试文件的第二行改成相对路径导入即可,两种写法都可生效:
// 写法1:带文件后缀,避免识别歧义 const context = require('./DefaultContext.js'); // 写法2:不带后缀,Jest会根据你配置的moduleFileExtensions自动匹配查找 const context = require('./DefaultContext');
注意导入时的文件名大小写要和实际文件一致,你本地文件是首字母大写的DefaultContext.js,导入时也要对应大小写,避免在大小写敏感的操作系统上出现二次报错。
- 方案2:调整Jest配置(适合多测试文件都要复用这个公共context的场景)
在项目根目录的jest.config.js中添加moduleDirectories配置,把test目录加入模块查找路径:
module.exports = { // 保留原有其他配置不变 moduleDirectories: ['node_modules', 'test'] }
配置完成后你原来的require('defaultContext')写法就可以正常运行。
内容的提问来源于stack exchange,提问作者Muflix
相关产品推荐
相关产品推荐

