首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在测试契约时传递地址数组

如何在测试契约时传递地址数组
EN

Ethereum用户
提问于 2022-01-24 10:27:58
回答 1查看 1.5K关注 0票数 1

我写了一份合同..。

代码语言:javascript
复制
contract TimeLock is TimelockController {

    
    uint256 minDelay = block.timestamp + 4 minutes;


    constructor(
        address[] memory proposers,
        address[] memory executors
    ) TimelockController( minDelay, proposers, executors ) {}

    //rest of contract's code
 }

现在,我想用摩卡和javascript测试它,所以我写了一个测试.

代码语言:javascript
复制
beforeEach(async function(){
    //const date = new Date();
    TimeLock = await ethers.getContractFactory('TimeLock');
    [proposer, executor, sendTo, admin, ...addrs] = await ethers.getSigners();
    timelock = await TimeLock.deploy(proposer.address, executor.address);
    await timelock.deployed();
});

问题是,在测试我的合同时,我不知道如何通过javascript传递地址数组,根据我过去的知识,我正在这样做.

代码语言:javascript
复制
timelock = await TimeLock.deploy(proposer.address, executor.address);

这就是我的合同通过构造函数获取地址的方式..。

代码语言:javascript
复制
constructor(
            address[] memory proposers,
            address[] memory executors
        ) TimelockController( minDelay, proposers, executors ) {}

通过给出上面的地址,我得到了这个错误.

代码语言:javascript
复制
1) "before each" hook for "deploys the contract":
     Error: invalid value for array (argument="value", value="0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", code=INVALID_ARGUMENT, version=contracts/5.5.0)

有人能帮我通过数组发送地址吗?我做错了吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-01-24 15:09:59

您的契约构造函数需要两个数组作为参数。您的代码是发送两个地址,而不是数组。

会是这样的

代码语言:javascript
复制
timelock = await TimeLock.deploy([proposer.address], [executor.address]);
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/119797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档