如何模拟或存根 process.argv 值以便它可以返回特定参数?
我试过像这样使用沙箱:
beforeEach(() => {
sandbox.stub(process.argv.slice(2)[0], 'C:\\home\\project\\assignment').value('--local')
});
test("it replace value of node argument", () => {
assert(process.argv.slice(2)[0], '--local')
});
afterEach(() =>{
sandbox.restore()
})
但是我一直收到一个错误,提示尝试存根属性 *'C:\home\project ssignment' * of undefined
您可以通过编程修改
process.argv
。见修改节点进程环境或参数运行时
const assert = require('assert');
describe('71476237', () => {
let originalArgv;
beforeEach(() => {
originalArgv = process.argv;
});
afterEach(() => {
process.argv = originalArgv;
});
it('it replace value of node argument', () => {
process.argv = process.argv.concat(['node', 'C:\\home\\project\\assignment', '--local']);
assert(process.argv.slice(2)[0], '--local');
});
});
测试结果:
71476237
✓ it replace value of node argument
1 passing (3ms)
保存和恢复
process.argv
的正确方法是在每次测试前让它引用原始process.argv
的一个新的浅拷贝,这样测试时只修改副本:
const originalArgv = process.argv;
test.beforeEach(
() => {
process.argv = [...originalArgv];
}
);