[英]composeWith sub-generator not mocking as expected?
I'm trying to test my generator, which, using composeWith()
, relies on the sub-generator generator-express : 我正在尝试测试我的生成器,使用
composeWith()
依赖于子生成器generator-express :
this.composeWith(require.resolve('generator-express/app'), {dirname: this.props.app_name, createDirectory: 'n'});
This is an excerpt from my test with the mock dummy generator: 这是我使用模拟虚拟生成器测试的摘录:
var deps = [
[helpers.createDummyGenerator(), require.resolve('generator-express/app')]
];
describe('generator-cesium/app Test', () => {
beforeEach(() => {
return helpers.run(path.join(__dirname, '../generators/app'))
.inDir(path.join(__dirname, 'tmp'))
.withPrompts({
viewerContext: '/', // eslint-disable-line camelcase
appName: 'app' // eslint-disable-line camelcase
})
.withGenerators(deps)
});
...
But, I keep getting the following error: 但是,我一直收到以下错误:
Error [ERR_UNHANDLED_ERROR]: Unhandled error. (TypeError: Cannot read property 'match' of undefined)
at Immediate.setImmediate (node_modules/generator-express/node_modules/yeoman-generator/lib/index.js:406:18)
The error, indicating that the sub-generator is still being executed, leads me to believe that the mock is not actually working? 错误,表明子生成器仍在执行,让我相信模拟实际上没有工作?
I think the deps array only works for legacy style generators using names alias instead of path names. 我认为deps数组仅适用于使用名称别名而不是路径名的旧式样式生成器。
Using require.resolve()
, I think the easiest way to mock a generator would be use a tool like jest.mock
, proxyquire
or mockery
. 使用
require.resolve()
我想嘲笑发电机将使用类似的工具最简单的方法jest.mock
, proxyquire
或mockery
。
For example: 例如:
jest.mock('../generators/app', () => {
const helpers = require('yeoman-test');
helpers.createDummyGenerator();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.