You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Sinon迁移至node:test,Mock process argv触发类型错误求助

解决node:test mock process.argv的错误问题

你的代码存在两个关键问题,导致触发TypeError [ERR_INVALID_ARG_VALUE]:

问题分析

  • 错误引用了Process(大写P),应该使用Node.js全局的process对象(小写p)。
  • mock.getter的调用语法错误,正确格式应为mock.getter(目标对象, 属性名),然后通过.mockImplementation定义返回值。

正确实现代码

import { mock } from 'node:test';

// 对process的argv getter进行mock
const argvMock = mock.getter(process, 'argv').mockImplementation(() => [
  'node-path',
  'application-entry',
  'first-arg'
]);

// 测试逻辑...

// 测试结束后恢复mock,避免影响其他测试
argvMock.restore();

补充说明

  • node:test的mock会在测试函数执行完毕后自动清理,但显式调用restore()可以更安全地控制生命周期。
  • 如果是在测试套件中使用,也可以结合测试的beforeEach/afterEach钩子来管理mock的创建和销毁:
import { describe, it, mock } from 'node:test';

describe('测试process.argv', () => {
  let argvMock;

  beforeEach(() => {
    argvMock = mock.getter(process, 'argv').mockImplementation(() => [
      'node-path',
      'application-entry',
      'first-arg'
    ]);
  });

  afterEach(() => {
    argvMock.restore();
  });

  it('验证argv被正确mock', () => {
    console.log(process.argv); // 输出['node-path', 'application-entry', 'first-arg']
    // 你的测试断言...
  });
});

内容的提问来源于stack exchange,提问作者myol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:42:08