Web3js

如何在松露中測試重載函式?

  • January 28, 2022

我最近將鬆露升級到最新版本。現在它不再自動檢測重載函式。以前,我可以做以下事情:

await contract.function({
 from: accounts[0],
 value: web3.utils.toWei("0.5", "Ether")
});

await contract.function(param1, param2, {
 from: accounts[0],
 value: web3.utils.toWei("0.5", "Ether")
});

現在看來我必須以如下語法指定參數:

await contract.function['uint256', 'uint256'](param1, param2, {
 from: accounts[0],
 value: web3.utils.toWei("0.5", "Ether")
});

但是我怎樣才能聲明第一個沒有參數的函式版本呢?這樣做:contract.function[''](...)產生錯誤contract.function is not a function。不通過聲明任何內容[]也會產生相同的錯誤。

重載函式的參數也是兩個數組。一陣address[]一陣uint256[]。我已經嘗試過:

contract.function["address[]", "uint256[]"](addressList, uintList, {...})

這是行不通的。它產生相同的錯誤。

我也沒有在松露文件中找到任何有關此的資訊。

確保升級到最新版本的 Truffle,然後查看這些關於重載函式的發行說明:https ://github.com/trufflesuite/truffle/releases/tag/v5.0.0#user-content-what-s- new-in-truffle-v5-interacting-with-your-contracts-overloaded-solidity-functions

我希望這會有所幫助!

解決方案(松露 5.0.0+):

const example = await Example.deployed();
example.methods['setValue(uint256)'](123);
example.methods['setValue(uint256,uint256)'](11, 55);

引用自:https://ethereum.stackexchange.com/questions/67651