我跟随tutorial,但设置非常糟糕。基本上它使用typescript将.ts文件转换为.js。所以基本上用.js文件污染你的整个源代码。
因此,只要从源代码导入.ts文件,就会使用.js文件复制所有依赖项。
你知道怎么做正确的打字黄瓜测试吗?
一个hacky解决方案:将所有功能和所有文件复制到另一个临时文件夹,从那里运行。我希望黄瓜比这更成熟,所以我的问题在这里?
或者更改黄瓜的配置以查看来自ts的构建文件夹。
谢谢
代码结构:
现在您将编译打字稿并具有以下结构:
现在你可以看到stepDefinitions.js
不知道在哪里可以找到a.feature
。如果你在构建/测试文件夹上运行黄瓜,它将找不到任何步骤功能来运行...因为它们位于tests文件夹中。因此修复它的hacky方法是复制功能文件,从而产生以下结构:
现在它会起作用但是很黑,我不喜欢它。
根据提供的更多信息更新答案:
您应该做的第一件事是将您的功能和步骤分成他们自己的文件夹
tests
features
a.feature
b.feature
stepDefinitions
aStep.ts
接下来,创建一个cucumber.js文件,它将是黄瓜配置文件。我使用以下配置文件,但这取决于您想要做什么
var common = [
`--format ${
process.env.CI || !process.stdout.isTTY ? 'progress' : 'progress-bar'
}`,
'--format json:./reports/cucumber-json-reports/report.json',
'--format rerun:@rerun.txt',
'--format usage:usage.txt',
'--parallel 20',
'--require ./build/tests/stepDefinitions/**/*.js',
'--require ./build/tests/stepDefinitions/*.js',
'--require ./build/tests/support/*.js'
].join(' ');
module.exports = {
default: common,
};
以上告诉黄瓜您的步骤。现在,您可以从项目的根目录运行以下内容
tsc && ./node_modules/.bin/cucumber-js ./tests/features/ -p default
这将
我没有关注你的问题? Cucumber与将.ts文件编译为.js文件无关,也就是打字稿。如果您不希望.ts和.js文件位于同一文件夹中,则可以将以下内容添加到tsconfig.json文件中。
"outDir": "typeScript"
这会将javascript文件输出到项目根目录下的“typeScript”文件夹中。我个人喜欢将它们放在一起,因为它可以更容易调试。没有办法摆脱正在创建的.js文件,因为它们是运行javascript时使用的文件。
您不需要使用tsc
编译代码,然后按照Raymond Kelly的建议在编译文件上运行黄瓜。您可以使用--require-module ts-node/register
使用typescript转换器运行黄瓜。完整示例由cucumber-ts-starter的hdorgeval提供