同层级跨项目调用Cucumber stepDefinitions的配置方法问询
解决方案
要实现Project2复用Project1的登录步骤,只需要在cucumber执行时额外引入Project1的步骤定义文件路径即可,有两种可选配置方式:
方式1:直接修改package.json测试脚本
在原有测试命令的基础上新增--require参数指定Project1的步骤定义文件相对路径,修改后的配置如下:
"test:project2": "cucumber-js ./tests/ --require './tests/**/*.ts' --require '../Project1/tests/step_definitions/**/*.ts' --exit"
方式2(更推荐):修改Project2的cucumber.js配置
把公共步骤的引入统一放到cucumber配置文件中,后续不需要再修改脚本命令,修改后的Project2/cucumber.js内容如下:
let common = [ 'features/**/*.feature', // 指定feature文件路径 '--require-module ts-node/register', // 加载TypeScript模块 '--format node_modules/cucumber-pretty', // 加载自定义格式化工具 '--require ./tests/step_definitions/**/*.ts', // 加载本地步骤定义 '--require ../Project1/tests/step_definitions/**/*.ts' // 加载Project1的公共登录步骤 ].join(' ');
配置完成后,package.json的测试脚本可以简化为:
"test:project2": "cucumber-js ./tests/ --exit"
注意事项
- 确保Project2的
tsconfig.json配置可以正确识别Project1的TypeScript代码,避免编译报错,可在include字段中添加../Project1/**/*.ts,或配置paths别名映射Project1的路径。 - 路径均为从Project2根目录出发的相对路径,如果你调整了项目目录结构,需要对应修改路径参数。
内容的提问来源于stack exchange,提问作者Raul
相关产品推荐
相关产品推荐

