truffle/hardhat 单元测试如何切换不同的账号(地址)

truffle/hardhat 单元测试如何切换不同的账号(地址)

# truffle/hardhat 单元测试如何切换不同的账号(地址) ## 背景 truffle/hardhat 部署完合约之后,调用合约的方法,此时msg.sender是合约的owner ``` it("转币测试", async function () { await deployments.fixture(["KanamitTrade"]); const { tokenOwner, deployer, user0, user1 } = await getNamedAccounts(); const KanamitTrade = await ethers.getContract("KanamitTrade"); //deposit KanamitTrade.deposit({ value: ethers.utils.parseEther("1.2345678") }); } ``` 直接改 msg.sender会报错 ``` //deposit KanamitTrade.deposit({ sender:user0, value: ethers.utils.parseEther("1.2345678") }); ``` ## 可以用合约的 .connect() 来切换账号(地址) ``` it("222222222", async function () { const ftryKTrade = await ethers.getContractFactory("KanamitTrade"); const KanamitTrade = await ftryKTrade.deploy(KanamitCore.address); await KanamitTrade.deployed(); let signer1 = ethers.provider.getSigner(1); //deposit await KanamitTrade.connect(signer1).deposit({ value: ethers.utils.parseEther("1.2345678") }); } ```

truffle/hardhat 单元测试如何切换不同的账号(地址)

背景

truffle/hardhat 部署完合约之后,调用合约的方法,此时msg.sender是合约的owner

it("转币测试", async function () {
    await deployments.fixture(["KanamitTrade"]);
    const { tokenOwner, deployer, user0, user1 } = await getNamedAccounts();
    const KanamitTrade = await ethers.getContract("KanamitTrade");

    //deposit
    KanamitTrade.deposit({ value: ethers.utils.parseEther("1.2345678") });    
  }

直接改 msg.sender会报错

//deposit
    KanamitTrade.deposit({ sender:user0, value: ethers.utils.parseEther("1.2345678") });

可以用合约的 .connect() 来切换账号(地址)

it("222222222", async function () {        
    const ftryKTrade = await ethers.getContractFactory("KanamitTrade");

    const KanamitTrade = await ftryKTrade.deploy(KanamitCore.address);
    await KanamitTrade.deployed();

    let signer1 = ethers.provider.getSigner(1);    

    //deposit
    await KanamitTrade.connect(signer1).deposit({ value: ethers.utils.parseEther("1.2345678") });
}

区块链技术网。

  • 发表于 2021-05-25 16:14
  • 阅读 ( 595 )
  • 学分 ( 22 )
  • 分类:Solidity

评论