正确使用黄瓜与打字稿?

问题描述 投票:5回答:3

我跟随tutorial,但设置非常糟糕。基本上它使用typescript将.ts文件转换为.js。所以基本上用.js文件污染你的整个源代码。

因此,只要从源代码导入.ts文件,就会使用.js文件复制所有依赖项。

你知道怎么做正确的打字黄瓜测试吗?

一个hacky解决方案:将所有功能和所有文件复制到另一个临时文件夹,从那里运行。我希望黄瓜比这更成熟,所以我的问题在这里?

或者更改黄瓜的配置以查看来自ts的构建文件夹。

谢谢

Why just using typescript won't work:

代码结构:

  • 测试 一项功能 stepDefinitions.ts

现在您将编译打字稿并具有以下结构:

  • 测试 一项功能 stepDefinitions.ts
  • 建立 测试 stepDefinitions.js

现在你可以看到stepDefinitions.js不知道在哪里可以找到a.feature。如果你在构建/测试文件夹上运行黄瓜,它将找不到任何步骤功能来运行...因为它们位于tests文件夹中。因此修复它的hacky方法是复制功能文件,从而产生以下结构:

  • 测试 一项功能 stepDefinitions.ts
  • 建立 测试 一项功能 stepDefinitions.js

现在它会起作用但是很黑,我不喜欢它。

typescript cucumber cucumberjs
3个回答
4
投票

根据提供的更多信息更新答案:

您应该做的第一件事是将您的功能和步骤分成他们自己的文件夹

 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

这将

  1. 编译你的代码
  2. 运行cucumber-js库
  3. 在features文件夹中运行cucumber-js
  4. 使用您在cucumber.js文件中构建的默认配置文件对features文件夹运行cucumber-js

0
投票

我没有关注你的问题? Cucumber与将.ts文件编译为.js文件无关,也就是打字稿。如果您不希望.ts和.js文件位于同一文件夹中,则可以将以下内容添加到tsconfig.json文件中。

"outDir": "typeScript"

这会将javascript文件输出到项目根目录下的“typeScript”文件夹中。我个人喜欢将它们放在一起,因为它可以更容易调试。没有办法摆脱正在创建的.js文件,因为它们是运行javascript时使用的文件。


0
投票

您不需要使用tsc编译代码,然后按照Raymond Kelly的建议在编译文件上运行黄瓜。您可以使用--require-module ts-node/register使用typescript转换器运行黄瓜。完整示例由cucumber-ts-starter的hdorgeval提供

© www.soinside.com 2019 - 2024. All rights reserved.