gpt4 book ai didi

javascript - 测试 yeoman 子生成器

转载 作者:行者123 更新时间:2023-11-28 21:26:50 25 4
gpt4 key购买 nike

我正在尝试使用 inDir() 辅助方法测试生成器,以在 2 个不同的目录中运行 2 个不同的测试场景,并得到令人困惑的结果。

第一次运行生成器时,一切都按预期工作。它将所有文件复制到我的 tmp1 目录中。

然而,当生成器从第二个 describe block 运行时,唯一复制的文件是 .yo-rcGruntfile.js .

我认为这与我的测试设置有关,因为如果我在第一个 describe 上放置一个 .skip,那么生成器会在 中正确运行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');
});
});
});

这可能是什么原因造成的?

注意:

对于上下文,我想测试在已经包含由基础生成器创建的项目的文件夹中运行子生成器的场景,以确保它正确使用现有的项目配置。我不确定我在这里所做的是否是实现该目标的最佳方式,但我认为这个问题可能令人困惑,值得单独提出一个问题。

最佳答案

inDir() 清理目录。

如果您需要一些 to exists 以运行您的第二个生成器,那么您可以使用 inDir 的回调参数来创建虚拟文件并进行断言。

关于javascript - 测试 yeoman 子生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38213378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com