Как заставить значение true для проверки if-then с Yeoman - PullRequest
0 голосов
/ 18 января 2020

У меня есть этот индекс генератора Йомана. 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%. Заранее спасибо!

...