Есть два момента, которые мне нужно объяснить - как сбросить ярги без использования устаревшего метода .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 не имеет значения.