Mocha

斷言(假)未執行

  • November 27, 2021

我正在為 Solidity SC 執行 mocha 測試。我的一個測試函式應該通過,然後,就在這之後我呼叫了 assert(false),但它沒有執行。

it('only manager can call the pickWinner', async () => {
try {
 await lottery.methods.pickWinner().call({
   from: accounts[1],
 });
 assert(false);
} catch (err) {
 assert(err);
}});

即使我在做斷言(假),測試也通過了。

因為您在測試中發現了錯誤。

Mocha 的想法是在框架級別擷取異常,而不是在“應用程序”級別。

如果測試向 Mocha 框架拋出異常,則測試失敗,否則通過。

我認為我們正在觀看相同的 udemy 課程。有對該講座的評論:

“這不起作用,因為 assert(false) 實際上會引發錯誤,所以它總是會通過。”

評論中建議的解決方案:

it('requires a minimum amount of ether to enter', async () => {
   let executed;
   try {
     await lottery.methods.enter().send({
       from: accounts[0],
       value: '100'
     });
     executed = 'success';
   } catch (err) {
     executed = 'fail'
   }

   assert.equal('fail', executed);
 });

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