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

Mac M1环境下基于superoak的简单Deno测试出现异步操作泄漏报错

问题排查与解决方案

问题根因

你所使用的Deno 1.13.2、superoak@4.4.0、oak@v9.0.0属于较早期的版本组合,superoak内部创建的测试服务在请求完成后未完全释放TCP连接资源,会触发Deno测试默认开启的异步操作/资源泄漏校验,因此出现AssertionError报错,即使接口返回内容符合预期也会判定测试失败,该问题和Mac M1硬件架构无关联。

修复方案

方案1:关闭测试的泄漏校验(最简便)

在Deno.test配置中关闭异步操作、资源泄漏校验逻辑,适配老版本依赖的兼容问题,修改后的测试代码如下:

import { Application, Router, RouterContext } from "https://deno.land/x/oak@v9.0.0/mod.ts";
import { superoak } from "https://deno.land/x/superoak@4.4.0/mod.ts";

const router = new Router();
router.get("/", (ctx: RouterContext) => {
  ctx.response.body = "Hello Deno!";
});

const app = new Application();
app.use(router.routes());
app.use(router.allowedMethods());

// 调整测试配置,关闭泄漏校验
Deno.test({
  name: "it will allow you to make assertions if you await it",
  async fn() {
    const request = await superoak(app);
    await request.get("/").expect(200).expect("Hello Deno!");
  },
  // 关闭异步操作泄漏校验
  sanitizeOps: false,
  // 关闭资源泄漏校验
  sanitizeResources: false
});

修改后直接运行原测试命令即可正常通过。

方案2:运行命令新增unstable参数

你所使用的superoak版本依赖Deno的不稳定网络API,未开启--unstable标识时会出现资源无法正常回收的问题,保持测试代码不变,修改运行命令为:

deno test --allow-env --allow-net --unstable ./src/app.test.ts

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:30:05