如何在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,这样测试时不需要操作全局变量,也不会对其他用例产生影响:
- 先改造函数定义:
// 给参数加默认值,没有手动传参时才读取Deno.args async function createQRhtml(content = Deno.args[0]) { // 原有函数逻辑保持不变 }
- 测试时直接传参即可:
Deno.test({ name: "Testing qr-html generation", fn: async () => { await createQRhtml("你需要的测试参数"); assertEquals(exists("out/qr.html"), true); } });
内容的提问来源于stack exchange,提问作者Amith
相关产品推荐
相关产品推荐

