$ npm install yeoman-test
Test utilities for Yeoman generators
$ npm install --save-dev yeoman-test
Install target environment and generator:
$ npm install --save-dev yeoman-generator@xxx yeoman-environment@xxx
Usage:
import helpers from 'yeoman-test';
describe('generator test', () => {
describe('test', () => {
let runResult;
beforeEach(async () => {
runResult = await helpers
.create( // instantiates RunContext
'namespace', // namespace or generator
{}, // test options
{} // environment options
)
[.cd(dir)] // runs the test inside a non temporary dir
[.onTargetDirectory(dir => {}) // prepares the test dir
[.withGenerators([])] // registers additional generators
[.withLookups({})] // runs Environment lookups
[.withOptions({})] // passes options to the generator
[.withLocalConfig({})] // sets the generator config as soon as it is instantiated
[.withAnswers()] // simulates the prompt answers
[.withMockedGenerators(['namespace', ...])] // adds a mocked generator to the namespaces
[.withFiles({
'foo.txt': 'bar',
'test.json', { content: true },
})] // add files to mem-fs
[.withYoRc({ 'generator-foo': { bar: {} } })] // add config to .yo-rc.json
[.withYoRcConfig('generator-foo.bar', { : {} })] // same as above
[.commitFiles()] // commit mem-fs files to disk
[.onGenerator(gen => {})] // do something with the generator
[.onEnvironment(env => {})] // do something with the environment
[.build(runContext => { // instantiates Environment/Generator
[runContext.env...] // does something with the environment
[runContext.generator...] // does something with the generator
})]
.run(); // runs the environment, promises a RunResult
[result.create().run()] // instantiates a new RunContext at the same directory
);
afterEach(() => {
if (runResult) {
// Optional if context is executed at a temporary folder
runResult.restore();
}
});
it('runs correctly', () => {
// runs assertions using mem-fs.
[runResult.assertFile('file.txt');]
[runResult.assertNoFile('file.txt');]
[runResult.assertFileContent('file.txt', 'content');]
[runResult.assertEqualsFileContent('file.txt', 'content');]
[runResult.assertNoFileContent('file.txt', 'content');]
[runResult.assertJsonFileContent('file.txt', {});]
[runResult.assertNoJsonFileContent('file.txt', {});]
});
});
});
Convenience last RunResult instance:
import helpers, { result } from 'yeoman-test';
describe('generator test', () => {
before(() => helpers.run('namespace'));
it('test', () => {
result.assert...;
});
});
Generator compose:
import assert from 'assert';
import helpers, { result } from 'yeoman-test';
describe('my-gen', () => {
before(() => helpers.run('my-gen').withMockedGenerator(['composed-gen']));
it('should compose with composed-gen', () => {
assert(result.mockedGenerators['composed-gen'].calledOnce);
});
});
Generic test folder:
import helpers, { result } from 'yeoman-test';
describe('generic test', () => {
before(() => helpers.prepareTemporaryDir());
it('test', () => {
result.assert...;
});
});
See our api documentation for latest yeoman-test release.
See our api documentation for yeoman-test 5.0.1. Use 5.x for yeoman-environment 2.x support.
See our api documentation for yeoman-test 2.x.
See our documentation for yeoman-test 2.x.
MIT © The Yeoman Team
© 2010 - cnpmjs.org x YWFE | Home | YWFE