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

测试用例失败:await关键字无效引发TS(80007)警告

问题修复方案

你的测试代码核心问题是await的位置错误,导致它未生效并触发TypeScript警告。

问题根源

你把await包裹了整个expect(...)表达式,但expect()本身返回的是Chai的断言对象,不是Promise,所以await对它完全不起作用。而Chai的事件断言链式调用(.to.emit(...).withArgs(...))才会返回需要等待的Promise,你需要等待这个链式调用的结果。

修复后的代码

describe("Add Task", function() {
    it("Should emit AddTask Event", async () => {
        let task = {
            taskText: "New task",
            isDeleted: false,
        };
        // 正确写法:await 整个expect链式调用的结果
        await expect(taskContract.addTask(task.taskText, task.isDeleted))
            .to.emit(taskContract, "AddTask")
            .withArgs(owner.address, total_tasks);
    });
});

额外说明

  • 你之前把async箭头函数改成普通函数没用,是因为问题根本不在函数类型,而是await的位置完全错了。
  • 合约调用taskContract.addTask(...)返回的是交易Promise,Chai的事件断言需要基于这个Promise监听事件,所以必须通过await等待整个断言逻辑执行完成。

内容的提问来源于stack exchange,提问作者1181_Rahul Guha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:31:14