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

如何在Deno test中向测试代码传递命令行参数?

解决方法

你可以根据你的使用场景选下面任意一种方案:

方案1:测试用例内临时修改Deno.args

Deno.args本身是可修改的普通数组,你可以在调用目标函数前给它赋值,测试完成后恢复原值避免影响其他测试用例:

Deno.test({
  name: "Testing qr-html generation",
  fn: async () => {
    // 备份原有参数
    const originalArgs = [...Deno.args];
    // 写入你需要的测试参数
    Deno.args = ["你需要传入的内容,比如二维码指向的链接"];
    await createQRhtml();
    assertEquals(exists("out/qr.html"), true);
    // 恢复原有参数
    Deno.args = originalArgs;
  }
});

方案2:运行测试命令时直接传入参数

执行deno test时,在命令末尾加-- 后跟上你要传入的参数即可,这些参数会自动写入Deno.args数组:

deno test -- 你要传入的参数值

这种方法适合不想修改测试代码的场景。

方案3(更推荐):改造函数设计降低耦合

如果你可以修改createQRhtml的代码,建议把参数改成可传入的可选值,默认读取Deno.args,这样测试时不需要操作全局变量,也不会对其他用例产生影响:

  1. 先改造函数定义:
// 给参数加默认值,没有手动传参时才读取Deno.args
async function createQRhtml(content = Deno.args[0]) {
  // 原有函数逻辑保持不变
}
  1. 测试时直接传参即可:
Deno.test({
  name: "Testing qr-html generation",
  fn: async () => {
    await createQRhtml("你需要的测试参数");
    assertEquals(exists("out/qr.html"), true);
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:36:00