首页 > 解决方案 > 如何使用 createDummyGenerator() 函数?

问题描述

createDummyGenerator()在测试依赖于外部生成器的生成器时,我无法理解如何使用该功能。

我努力了:

测试.js:

...
return helpers.run(require.resolve('../generators/app'))
  .withGenerators([
    [helpers.createDummyGenerator(), 'license:app'],
  ])
  .then(() => {
    assert.textEqual('true', 'true')
  });
...

index.js:

...
default() {
  this.composeWith('license:app', { name: 'foo' });
}
...

这会导致测试失败,因为它找不到 license:app 的生成器。我的 package.json 中有生成器许可证作为依赖项。


我还尝试了以下方法:

测试.js:

...
beforeEach(() => {
  jest.mock('generator-license/app', () => {
    const helpers = require('yeoman-test');
    return helpers.createDummyGenerator();
  });
}
...

index.js:

...
default() {
  this.composeWith(require.resolve('generator-license/app', { name: 'foo' }));
}
...

这根本不模拟生成器,它使用实际的生成器许可证代码,这会使测试失败,因为没有提供所有提示(有些是由许可证生成器询问的)


我应该如何使用createDummyGenerator()帮助程序来完全排除许可证生成器?

标签: yeoman

解决方案


好吧,我觉得自己像个白痴……我在另一个没有模拟模块的测试中打错了字,这就是导致测试套件失败的原因……没关系,这里没什么可看的 :)


推荐阅读