Go-Ethereum

為返回多個值的函式編寫可靠的測試

  • January 9, 2022

我有一個返回多個值的函式

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");

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