Go-Ethereum
為返回多個值的函式編寫可靠的測試
我有一個返回多個值的函式
function getInfo(string id) returns(string x,string y){ bytes32 _id= strToBytes(id); return (infostruct[_id].x,infostruct[_id].y) ; }
現在我想在松露中使用可靠性測試來測試這個功能
function testBaseContract(){ BaseContract basecontract= BaseContract(DeployedAddresses.BaseContract()); var (x,y) = basecontract.getInfo("1"); Assert.equal(x,"198/180","this id data is not accessible to you or doesn't exist at all."); }
我不知道如何可靠地訪問多個返回值,這是我最好的猜測,我得到了錯誤
TypeError: Member "equal" is not available in type(library Assert) outside of storage.
基本上它給你的結果是松露,你可以使用explode將結果與預期的術語或對象/數組進行比較。但是您訪問結果如下 -
basecontract.getInfo("1",function(error,data){ // data returns a tuple var rowdata = data.toString().split(',') // you can access the values through array rowdata[0] // do the comparison })
改變這個:
var (x,y) = basecontract.getInfo("1");
對此:
var [x,y] = await basecontract.getInfo("1");