jest-cucumber调用loadFeature报Feature file not found错误
问题描述
- 项目中存在
consoleLogger.feature特性文件、对应步骤定义文件consoleLogger.steps.js - 步骤定义文件初始代码如下:
import { defineFeature, loadFeature } from 'jest-cucumber'; const consoleLogger = require('../src/Util/consoleLogger'); const feature = loadFeature('../feature/consoleLogger.feature');
- 执行测试时通过
loadFeature关联两个文件失败,抛出如下报错:
FAIL steps/consoleLogger.steps.js ● Test suite failed to run Feature file not found (C:\Users\sr00015\NewWorkspace\feature\consoleLogger.feature)
- 报错核心提示:传入路径下未找到目标feature文件
排查解决步骤
- 修正路径解析逻辑:
loadFeature默认的相对路径是基于执行jest命令的项目根目录解析,不是基于当前步骤文件所在目录解析。当前写法../feature/consoleLogger.feature是从steps目录向上一级寻址,和实际解析规则不匹配,直接改成./feature/consoleLogger.feature即可匹配根目录下的feature文件夹。 - 若修改相对路径后仍报错,用绝对路径规避解析偏差:引入Node原生
path模块,基于当前步骤文件的目录位置拼接绝对路径,完全不受执行目录影响,示例代码:
const path = require('path'); // 其余原有导入逻辑保持不变 const feature = loadFeature(path.join(__dirname, '../feature/consoleLogger.feature'));
- 完成基础校验:
- 核对文件名大小写,确保代码里写的文件名和实际文件完全一致,避免跨系统运行的大小写兼容问题
- 核对目录层级,确认
consoleLogger.feature直接存放在项目根目录下的feature文件夹内,没有多余的嵌套层级 - 如果自定义过jest的
rootDir配置或jest-cucumber的全局路径配置,对应调整传入的路径参数即可
内容的提问来源于stack exchange,提问作者santhazh
相关产品推荐
相关产品推荐

