2016-07-05 6 views
0

Я пытаюсь проверить генератор с помощью вспомогательного метода 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'); 
    }); 
    }); 
}); 

Что может быть причиной этого?

Примечание:

Для связи я хочу проверить сценарий запуска суб-генератора в папку, которая уже содержит проект, созданный с помощью базового генератора, чтобы убедиться, что он правильно использует существующий конфигурации проекта. Я не уверен, что то, что я здесь делаю, это лучший способ добиться этого, но я подумал, что эта проблема может запутать достаточно, чтобы заслужить свой собственный вопрос.

ответ

1

inDir() очищает каталог.

Если вам нужно, чтобы кто-то существовал для запуска вашего второго генератора, вы можете использовать параметр обратного вызова inDir, чтобы создать фиктивные файлы и сделать свои утверждения против.

+0

Вот что я в конечном итоге пытаюсь сделать здесь: скопируйте файлы из 'tmp1' в' tmp2', используя 'inDir()'. Однако, когда я запускаю генератор из второго блока 'describe', даже если я не копирую файлы, он работает неправильно. В этом примере оба вызова helpers.run() идентичны, кроме целевого каталога, но они не дают одинаковых результатов. Я обеспокоен тем, что мои тесты не зависят друг от друга, но я не могу понять, почему. – Deimyts

Смежные вопросы