javascript - 测试 yeoman 子生成器

标签 javascript testing mocha.js yeoman yeoman-generator

我正在尝试使用 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/

相关文章:

google-chrome - 在较旧的 google chrome 版本中进行测试

mocha.js - 光谱和 Electron 开始应用

javascript - 如何将流、 promise 和管道一起编写单元测试?

javascript - 导航栏在图像上下拉

javascript - AngularJS ui-grid 中的网格更改时如何得到通知?

javascript - 纯 JavaScript 中的选择器.addClass ('classname' )

javascript - 如何在方括号表示法等点表示法中使用变量

javascript - 导出服务器进行集成测试时出现 React Jest 问题

java - 如何通过重新抛出异常来测试代码?

express - Mocha websocket 测试不会可靠地失败/通过