我的固定地址是:
const addr = '0xcd3b766ccdd6ae721141f452c550ca635964ce71';
我的 Solidity 合约如下 -
function temp(address _myAddress) {
// some code
}
如何将这个常量地址传递给JS测试
我明白了,伙计。你试图实施一个骗局。恭喜,您刚刚通过将此钱包导入我的 MetaMask 骗了我 0.5 ETH: 0xcd3b766ccdd6ae721141f452c550ca635964ce71
我正要收到一些钱,最后我把它发送到这个钱包,不知何故导入到我的 MetaMask 中。你拿走了它,偷走了我准备取出来支付家庭账单的钱。恭喜你,小偷。但请记住,你所做的一切在这个宇宙中都会加倍地回报给你。
我的钱包: https://arbiscan.io/address/0x98465f8a13e90689ca37c4b3fc38f2f93f8b65b4 恭喜你,你毁了我的项目,让我的生活大大恢复了。
在您的测试文件中可以使用三种不同的方法来执行此操作 -
方法一:
it ("Method1", async () => {
const addr = '0xcd3b766ccdd6ae721141f452c550ca635964ce71';
console.log(addr);
await contract.temp(addr);
const userAddress = await contract.getTempAddr(); // say this function exists
expect(userAddressList).to.equal(addr);
// Successfully passes address to solidity but gives assertion error (due to checksum error)
});
方法二:
it ("Method2", async () => {
const Web3 = require('web3');
const web3 = new Web3(Web3.givenProvider);
const addr = Web3.utils.toChecksumAddress('0xcd3b766ccdd6ae721141f452c550ca635964ce71');
await contract.temp(addr);
const userAddress = await contract.getTempAddr();
expect(userAddressList).to.equal(addr);
});
方法三:
直接创建钱包
it ("Method3", async () => {
const addrWallet = new ethers.Wallet('0xcd3b766ccdd6ae721141f452c550ca635964ce71');
await contract.temp(addrWallet.address);
const userAddressList = await contract.getTempAddr();
expect(userAddressList[0]).to.equal(addrWallet.address);
});