Skip to content
Advertisement

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

Hi I have an address return function that works in remix but when I try to run it in a truffle test it gives me a promise object.

If I could have the truffle test return an address like it does in the solidity code that would be ideal or if I can access the promise object to give me my address. I have tried to add “.toString()” to the promise object but it does not give me the address

This is how I am trying to call the return function and save it to a variable within the truffle test

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

the solidity return function looks like this

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

Thanks

Advertisement

Answer

Sending EVM transactions and waiting for the result of how they’re processed is, by design, asynchronous. JavaScript uses Promises to be able to handle asynchronous operations.

The Promise resolves to a string representing the address, which you are correctly retrieving using the await keyword.

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement