У меня есть этот индекс генератора Йомана. js:
module.exports = class extends Generator {
constructor(args, opts) {
super(args, opts);
this.argument('webComponent', {
desc: 'web component name',
type: String,
required: false,
validate: function (input) {
return Validators.webCompName(input);
}
});
this.webCompName = '';
}
configuring() {
this.webCompName = this.options.webComponent;
// Final check before processing this request. The name is
// rejected. If this generator has prompted the user,
// the prompt input remains available to fix the invalid name.
// If the name comes as a command line argument, a error
// message is displayed and the generator quits.
const valid = Validators.webCompName(this.webCompName);
try {
if (typeof valid === 'string') {
this.env.error(valid);
}
} catch (e) {
return -1;
}
const path = `src/ts/jet-composites/${this.webCompName}/component.json`;
const webComponentExists = Utils.FileStore.checkFileExists(this.destinationPath(path));
try {
if (webComponentExists) {
this.spawnCommandSync('node', ['./node_modules/@oracle/oraclejet-webdriver/bin/generate', `src/ts/jet-composites/${this.webCompName}/component.json`, 'web-elements']);
} else {
this.env.error('You only can add WebElement stubs for existing web components');
}
} catch (e) {
// return -1;
}
return 0;
}
};
И этот файл модульного тестирования, где я собираюсь протестировать вышеуказанный файл, используя sinon:
const helpers = require('yeoman-test');
const assert = require('yeoman-assert');
const path = require('path');
const sinon = require('sinon');
const Generator = require('yeoman-generator');
describe('generator-gbu-web-element test cases', function () {
this.beforeEach(function () {
this.testStub = sinon.spy(Generator.prototype, 'spawnCommandSync');
});
this.afterEach(function () {
this.testStub.restore();
});
describe('mocha functional test creation of web-element', function () {
this.beforeEach(async function () {
await helpers.run(path.join(__dirname, '../generators/app'))
.withArguments(['demo-component'])
.withPrompts({
webElementStub: true
});
});
it('run the @gbu/gbu-web-element generator', function () {
assert(this.testStub.notCalled);
});
});
describe('Web Elements generator', function () {
it('throws and error for component name with wrong format', function (done) {
helpers.run(path.join(__dirname, '../generators/app'))
.withArguments(['demo'])
.catch(function (err) {
assert.ok(err.message === 'Need to provide a valid web component name. The name must contain a hyphen/dash');
})
.finally(done);
});
it('throws and error if web component does not exists', function (done) {
helpers.run(path.join(__dirname, '../generators/app'))
.withArguments(['demo-component-does-not exist'])
.catch(function (err) {
assert.ok(err.message === 'You only can add WebElement stubs for existing web components');
})
.finally(done);
});
});
});
у меня есть проблема:
Как я могу установить истинное значение для переменной
webComponentExists
в if-then, чтобы я мог проверить, что
spawnCommandSync
команда выполняется?
Мне это нужно для того, чтобы преодолеть установленный порог в 80%. Заранее спасибо!