私は、inDir()
ヘルパーメソッドを使用して2つの異なるディレクトリで2つの異なるテストシナリオを実行し、混乱する結果を得るためにジェネレータをテストしようとしています。yeomanサブジェネレータのテスト
ジェネレータを初めて実行すると、すべて正常に動作します。すべてのファイルを私のtmp1
ディレクトリにコピーします。
ただし、第2のdescribe
ブロックからジェネレータを実行すると、コピーされるファイルは.yo-rc
とGruntfile.js
です。
を最初のdescribe
に置くと、tmp2/
で正しく実行されるため、これは私のテストセットアップと関係があると思います。
次の例では、変数の数を減らすために同じ設定を使用しましたが、実際には、それぞれのジェネレータには異なるプロンプトが渡されます。これを引き起こしている可能性がありますどのような
let prompts = require('../fixtures/prompts.js');
describe('generator,', function() {
this.timeout(0);
let generator = require.resolve('../../app/index.js');
beforeEach(function() {
let options = {
skipInstall: true,
}
this.generator = helpers.run(require.resolve('../../app/index.js'))
.withPrompts(prompts.default)
.withOptions(options)
});
describe('in tmp1/', function() {
beforeEach(function(done) {
this.generator
.inDir(path.resolve(__dirname, '../../tmp1'))
.on('end', done);
});
it('should copy the files', function(){
assert.file('dummyfile.txt');
});
});
describe('in tmp2/', function() {
beforeEach(function(done) {
this.generator
.inDir(path.resolve(__dirname, '../../tmp2'))
.on('end', done);
});
it('should not be crazy', function() {
assert.file('dummyfile.txt');
});
});
});
:
は、ここに私のテストファイルですか?
注:コンテキストについては
、私はそれが正しく、既存のを使用していることを確認するために、すでにベースジェネレータによって作成したプロジェクトを含むフォルダにサブジェネレータを実行するシナリオをテストしたいですプロジェクト構成。私がここでやっていることが達成するための最善の方法であるかどうかは分かりませんが、私はこの問題が独自の質問に値するほど紛らわしいと思っていました。
これは私が最終的にここでやろうとしていることです:ファイルを 'tmp1'から' tmp2'に 'inDir()'を使ってコピーしてください。しかし、2番目の 'describe'ブロックからジェネレータを実行すると、ファイルをコピーしていなくても正しく実行されません。この例では、helpers.run()の両方の呼び出しは、ターゲットディレクトリ以外は同一ですが、同じ結果が得られません。私のテストはお互いに独立していないのではないかと心配していますが、理由を理解することはできません。 – Deimyts