Как правильно выполнить юнит-тест yargs в машинописи - PullRequest
0 голосов
/ 03 февраля 2020

Есть два момента, которые мне нужно объяснить - как сбросить ярги без использования устаревшего метода .reset (); (метод .global () вместо этого, но как ??) - как передать в командной строке yargs, введенные пользователем,

С учетом следующего теста:

import * as yargs from 'yargs';
describe.only('how to write a unit test for yargs with typescript', () => {
  beforeEach(() => {
    yargs.reset(); // No, but how do we get a new yargs instance?
  });
  it('yargs', () => {
    const usernameOption = {
      alias: 'username',
      describe: 'website username'
    };
    // (['login', '-u', 'jimmy']) => where does this go, without causing a build error
    // TS2349: This expression is not callable
    //
    yargs.command('login', 'login to website', (y: yargs.Argv): yargs.Argv => {
      return y.option('u', usernameOption);
    });
    console.log(`>>> ${JSON.stringify(yargs.argv)}`);

    // the above outputs:
    // >>> result: {"_":[],"$0":"/Users/Plastikfan/dev/github/js/aergia-cli-ts/node_modules/.bin/mocha"}
    //
    // how to reset yargs without using deprecated .reset() method?
    // => .global() ?
    //
  });
});

если я пытаюсь передать в командной строке yargs:

    yargs(['login', '-u', 'jimmy']).command('login', 'login to website', (y: yargs.Argv): yargs.Argv => {
      return y.option('u', usernameOption);
    });

Я вижу следующую ошибку 'TS2349: Это выражение не вызывается':

ОШИБКА в / Users / Plastikfan / dev / github / js / aergia-cli-ts / tests / yargs / yargs-builder.impl.spe c .ts ./tests/yargs/yargs-builder.impl.spec.ts [tsl ] ОШИБКА в /Users/Plastikfan/dev/github/js/aergia-cli-ts/tests/yargs/yargs-builder.impl.spec.ts(89,5) TS2349: Это выражение не вызывается. Введите '{default: Argv <{}>; псевдоним (короткое имя: K1, длинное имя: K2 | только для чтения K2 []): Argv <{[ключ в K2]: {} [K1]; }>; псевдоним (shortName: K2, longName: K1 | только для чтения K1 []): Argv <...>; У псевдонима (shortName: string | readonly string [], longName: string | readonly st ... 'нет сигнатур вызовов.

Я просматривал другие тесты YARG и нашел эти тесты в yargs: завершение yargs * в частности, 1016 *

:

yargs(['./completion', '--get-yargs-completions', 'apple'])

ie yargs вызывается (), но именно здесь я получаю сообщение об ошибке, когда я попробуйте это в тесте машинописи. Обратите внимание, что приведенный пример является тестом javascript, и он также использует устаревшую функцию .reset () внутри beforeEach.

У меня изначально было "esModuleInterop": true, в tsconfig , но установка в false не имеет значения.

...