- 投稿日:
単体テストの観点でいうとprocess.argv
そのものはモックしないほうが良いと思っているので、本記事ではprocess.argv
自体をモックする方法と、それを回避する方法を紹介する
サンプルコード
正攻法
describe('example', () => {
afterEach(() => {
// 元に戻しておく
process.argv.length = 2;
});
it('got first param', () => {
process.argv.push('param1');
expect(process.argv.length).toBe(3);
expect(process.argv[2]).toBe('param1');
});
});
そもそもモックせずに済むように設計する
process.argv
を利用している関数でprocess.argv
を引数に取ればモック不要となる
const getArgv = (argv: string[]) => {
// some procedure
}
describe('getArgv', () => {
it('got first param', () => {
const argv = [,, 'param1'];
expect(argv.length).toBe(3);
expect(argv[2]).toBe('param1');
});
});