编写truufle测试用例时如何指定调用合约账户地址?

问题描述 投票:0回答:1

step3.sol

pragma solidity ^0.8.20;

contract step3 {
    
  address owner; // 状态变量

  constructor() {
      owner = msg.sender;
  }
    
  function sayHello() external view returns(address a){
      if(owner==msg.sender) {
        return msg.sender;
      }

      string memory  greeting ="hello world"; // 局部变量
      
      return msg.sender;
  }

}

cehck.js

//执行定义变量来表示不同的合约
const step3  = artifacts.require('step3.sol');
//执行定义合约中的其他操作
contract('step3',accounts => {
    before(async () => {
      let a = await step3.deployed();
      let c = await a.sayHello();
      console.log("调用greets 方法:入参:无,回参:"+c);
      console.log(accounts)
    });
    it('Check whether the contract has been issued successfully', async () => {
    }); 
});

我尝试使用truffle获取默认合约地址并且成功了,我现在需要更改合约账户地址以在truffle中调用合约

solidity truffle
1个回答
0
投票

由于您的

sayhello()
是一个
view
函数,Truffle 框架默认进行只读调用。只读调用可以简单地覆盖
from
参数,而无需知道发送者的私钥。

let c = await a.sayHello({from: ownerAddress});
© www.soinside.com 2019 - 2024. All rights reserved.