Truffle

如何在測試案例中獲取需求消息?松露測試

  • February 14, 2022

例如,我正在為智能合約執行測試案例,它的測試功能需要驗證。

function test(uint _id) public pure returns(bool){
   require(_id == 0 ,"not valid!");
   return true;
}

但是當我執行測試案例時,它會拋出一個錯誤

AssertionError:錯誤:處理事務時出現 VM 異常:還原

測試案例:

it("Adding test into blockchain", async () => {                               

   const result = await Instance.test(1);                        

   expect(result).to.be.not.equal('null');            
});

it("Adding zero Id test into blockchain", async () => {                               

   const result = await Instance.test(0);                        

   //TODO: get error message   
});

當然會觸發異常

你在第一次測試中 require(_id == 0 ,"not valid!");

你餵牠 _id=1 (test(1)) 因此會引發異常。

使用 test(0) 進行測試

或者

檢查嘗試/擷取異常如下:

try {
    await Instance.test(1); 
       } catch (error) {
           Error = error;
       }
       assert.notEqual(Error, undefined, 'Error must be thrown');
       assert.isAbove(Error.message.search('VM Exception while processing transaction: revert'), -1, 'Error: VM Exception while processing transaction: revert');

   });

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