Pla*_*fan 5 unit-testing typescript yargs
我需要解释两点 - 如何在不使用已弃用的 .reset() 方法的情况下重置 yargs;(.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() ?
//
});
});
Run Code Online (Sandbox Code Playgroud)
如果我尝试将命令行传入 yargs:
yargs(['login', '-u', 'jimmy']).command('login', 'login to website', (y: yargs.Argv): yargs.Argv => {
return y.option('u', usernameOption);
});
Run Code Online (Sandbox Code Playgroud)
我看到以下错误“TS2349:此表达式不可调用”:
/Users/Plastikfan/dev/github/js/aergia-cli-ts/tests/yargs/yargs-builder.impl.spec.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<{}>; alias(shortName: K1, longName: K2 | readonly K2[]): Argv<{ [key in K2]: {}[K1]; }>; alias(shortName: K2, longName: K1 | readonly K1[]): Argv<...>; alias(shortName: string | readonly string[], longName: string | readonly st...' 没有调用签名。
我一直在扫描其他 yargs 单元测试,我在 yargs 中找到了这些测试:yargs completion tests
特别是:
yargs(['login', '-u', 'jimmy']).command('login', 'login to website', (y: yargs.Argv): yargs.Argv => {
return y.option('u', usernameOption);
});
Run Code Online (Sandbox Code Playgroud)
即 yargs 被调用 (),但这是我在打字稿测试中尝试时遇到错误的地方。请注意,引用的示例是一个 javascript 测试,它还使用了 beforeEach 中已弃用的 .reset() 函数。
我最初在 tsconfig 中有 "esModuleInterop": true,但将其设置为 false 没有任何区别。
| 归档时间: |
|
| 查看次数: |
814 次 |
| 最近记录: |