我正在关注tutorial,但设置确实很糟糕。基本上,它使用打字稿将.ts文件转换为.js。因此,基本上,.js文件会污染整个源代码。
因此,从源代码导入.ts文件后,所有依赖项都会与.js文件重复。
您知道如何进行适当的打字稿黄瓜测试吗?
一个骇人听闻的解决方案:将所有功能和所有文件复制到另一个临时文件夹,然后从那里运行。我希望黄瓜会比这成熟一些,因此在这里我的问题是什么?
或更改黄瓜的配置以从ts中查看构建文件夹。
谢谢
代码结构:
现在,您将编译打字稿并具有以下结构:
现在您可以看到stepDefinitions.js
不知道在哪里可以找到a.feature
。如果您在build / test文件夹中运行Cucumber,它将找不到要运行的任何步进功能...因为好,它们在tests文件夹中。因此,解决该问题的方法很复杂,就是将特征文件复制到以下结构中:
现在它可以工作,但是很老套,我不喜欢它。
答案 0 :(得分:3)
根据提供的更多信息更新了答案:
您应该做的第一件事是将功能和步骤分离到自己的文件夹中
tests
features
a.feature
b.feature
stepDefinitions
aStep.ts
接下来,创建一个cucumber.js文件,它将成为cucumber配置文件。我使用以下个人资料,但具体取决于您要做什么
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
这将
答案 1 :(得分:0)
我没有关注您的问题吗? Cucumber与将.ts文件编译为.js文件无关,即通过打字稿来完成。如果您不希望将.ts和.js文件放在同一文件夹中,则可以将以下内容添加到tsconfig.json文件中。
"outDir": "typeScript"
这会将javascript文件输出到项目根目录下的“ typeScript”文件夹。我个人喜欢将它们放在一起,因为这样可以更容易调试。无法摆脱正在创建的.js文件,因为它们是运行javascript时所使用的。
答案 2 :(得分:0)
您不需要使用tsc
编译代码,然后按照Raymond Kelly的建议在已编译的文件上运行Cucumber。您可以使用--require-module ts-node/register
和打字稿翻译器来运行Cucumber。完整示例由cucumber-ts-starter
答案 3 :(得分:0)
将黄瓜测试放入src中并用tsc
进行编译并不是一个好习惯,因为它污染了build
目录,该目录对于软件的运行不是必需的,尤其是在生产环境中。
可以使用ts-node
代替。运行npm install ts-node --save-dev
。这是cucumber-js
配置文件的示例(所有.feature
和步骤定义文件都在我的设置的/features
文件夹中):
module.exports = {
default: [
'--require-module ts-node/register',
'--require ./features/**/*.ts',
'--require ./features/*.ts',
].join(' '),
};
答案 4 :(得分:0)
您还可以使用ts-node
模块来编译黄瓜steps.ts
文件,因此不需要generate.js
文件
例如
./node_modules/.bin/cucumber-js features --require step-definitions/*.ts --require-module ts-node/register --format node_modules/cucumber-pretty"