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

如何解决Foundry中stdError未声明标识符错误?

解决Foundry测试中stdError未定义的编译器错误

你的问题出在stdError标识符未被正确导入,导致编译器无法识别它。解决方法有两种:

方法一:显式导入stdError

修改导入语句,将stdError加入到从forge-std/Test.sol导入的列表中:

import {Test, console2, stdError} from "forge-std/Test.sol";

方法二:通过父合约Test访问

如果不想修改导入语句,可以通过继承的Test合约来访问stdError:

vm.expectRevert(Test.stdError.arithmeticError);

修改后的完整测试代码示例:

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

import {Test, console2, stdError} from "forge-std/Test.sol";
import {Counter} from "../src/Counter.sol";

contract CounterTest is Test {
    Counter public counter;

    function setUp() public {
        counter = new Counter();
    }

    function testInc() public {
        counter.inc();
        assertEq(counter.count(), 1);
    }

    function testFailDec() public {
        counter.dec();
    }

    function test_RevertWhen_DecUnderFlow() public {
        vm.expectRevert(stdError.arithmeticError);
        counter.dec();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:52:36