Return 来自智能合约的地址函数 returns 承诺对象而不是松露测试中的地址

Return address function from smart contract returns promise object instead of address in truffle test

您好,我有一个地址 return 函数可以在 remix 中使用,但是当我尝试 运行 它在松露测试中时,它给了我一个 promise 对象。

如果我可以进行松露测试 return 一个地址,就像它在 solidity 代码中那样,那将是理想的,或者如果我可以访问 promise 对象来给我我的地址。我试图将“.toString()”添加到 promise 对象,但它没有给我地址

这就是我尝试调用 return 函数并将其保存到松露测试中的变量的方式

const newFractionContractAddress = await mainContract.getFractionContractAddress(0, {from: accounts[0]});

solidity return 函数如下所示

function getFractionContractAddress(uint _index) public view returns(address) {
    return address(nftDeposits[msg.sender].deposits[_index].fractionContract);
}

谢谢

按照设计,发送 EVM 事务​​和等待它们的处理结果是异步的。 JavaScript 使用 Promises 能够处理异步操作。

Promise 解析为表示地址的字符串,您可以使用 await 关键字正确检索该地址。