tutorial をフォローしていましたが、セットアップが本当に悪いです。基本的に、TypeScriptを使用して.tsファイルを.jsに変換します。したがって、基本的には、ソースコード全体を.jsファイルで汚染します。
したがって、ソースコードから.tsファイルをインポートするとすぐに、すべての依存関係が.jsファイルで複製されます。
適切なTypeScriptキュウリテストを行う方法を知っていますか?
ハッキーな解決策:すべての機能とすべてのファイルを別の一時フォルダーにコピーし、そこから実行します。きゅうりはこれより少し成熟していると思いますので、ここで質問しますか?
または、キュウリの構成を変更して、tsからビルドフォルダーを検索します。
ありがとうございました
コード構造:
次に、TypeScriptをコンパイルして、次の構造にします。
今、あなたはそれを見ることができますstepDefinitions.js
どこにあるのかわからないa.feature
。ビルド/テストフォルダーでキュウリを実行すると、実行するステップ機能が見つかりません...まあ、それらはテストフォルダーにあるからです。したがって、それを修正するためのハッキーな方法は、この構造をもたらす機能ファイルをコピーすることです。
今では動作しますが、ハッキーです。私はそれが好きではありません。
提供された詳細情報に基づいて回答を更新:
最初にすべきことは、機能とステップを独自のフォルダーに分割することです
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
この意志
キュウリのテストを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(' '),
};
Raymond Kellyが提案したように、tsc
を使用してコードをコンパイルしてから、コンパイルされたファイルに対してcucumberを実行する必要はありません。 --require-module ts-node/register
を使用して、TypeScriptトランスパイラーでキュウリを実行できます。 cucumber-ts-starter のhdorgevalの好意による完全な例
私はあなたの質問に従わないのですか? Cucumberは、.tsファイルを.jsファイルにコンパイルすることとは何の関係もありません。つまり、TypeScriptがそれを実行します。 .tsファイルと.jsファイルを同じフォルダーに入れたくない場合は、tsconfig.jsonファイルに以下を追加できます。
"outDir": "TypeScript"
これにより、プロジェクトのルートにあるフォルダ「TypeScript」にJavaScriptファイルが出力されます。デバッグが簡単になるので、個人的には一緒に保管するのが好きです。 javascriptを実行するときに使用される.jsファイルであるため、作成中の.jsファイルから逃れる方法はありません。