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

如何在Ethers.js测试中验证verify函数调用者地址与from一致?

测试逻辑实现

核心验证点

需要同时验证两个条件:

  • 测试账户acc5的地址与from地址完全一致
  • verify()函数的调用者(合约内的msg.sender)必须等于from地址

测试代码示例(基于Mocha + Chai)

describe("Multisig verify function caller check", function () {
  it("acc5 address should equal from address", async function () {
    // 直接断言acc5地址与from地址一致
    expect(await acc5.getAddress()).to.equal(from);
  });

  it("verify should execute successfully when caller is from", async function () {
    // 用acc5调用verify,此时调用者即为from地址
    await expect(
      multisig.connect(acc5).verify(from, to, value, _signature)
    ).not.to.be.reverted;
  });

  it("verify should revert when caller is not from", async function () {
    // 用非from地址的测试账户(如acc6)调用,验证合约拦截逻辑
    await expect(
      multisig.connect(acc6).verify(from, to, value, _signature)
    ).to.be.revertedWith("Caller is not from address"); // 替换为合约实际的报错提示
  });
});

补充说明

  1. 第一个用例验证前置条件,确保acc5确实是from对应的账户
  2. 第二个用例正向验证合法调用场景
  3. 第三个用例反向验证合约的调用者检查逻辑,确保非授权地址无法调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:36:28