Web3js
如何在松露中測試重載函式?
我最近將鬆露升級到最新版本。現在它不再自動檢測重載函式。以前,我可以做以下事情:
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);