如何在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"); // 替换为合约实际的报错提示 }); });
补充说明
- 第一个用例验证前置条件,确保
acc5确实是from对应的账户 - 第二个用例正向验证合法调用场景
- 第三个用例反向验证合约的调用者检查逻辑,确保非授权地址无法调用
内容的提问来源于stack exchange,提问作者Hacek
相关产品推荐
相关产品推荐

