Я пытаюсь проверить генератор с помощью вспомогательного метода inDir()
, чтобы запустить 2 разных тестовых сценария в двух разных каталогах и получить запутанные результаты.Тестирование юмогенератора
При первом запуске генератора все работает должным образом. Он копирует все файлы в мой каталог tmp1
.
Если генератор запускается со второго блока describe
, однако копируются только файлы .yo-rc
и Gruntfile.js
.
Я думаю, что это имеет какое-то отношение к моей тестовой настройке, потому что если я положил .skip
на первый 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()'. Однако, когда я запускаю генератор из второго блока 'describe', даже если я не копирую файлы, он работает неправильно. В этом примере оба вызова helpers.run() идентичны, кроме целевого каталога, но они не дают одинаковых результатов. Я обеспокоен тем, что мои тесты не зависят друг от друга, но я не могу понять, почему. – Deimyts