我有這個功能:
await sendTx(newProxyAddr, false, 'initialize', [0, nullAddr]);
...產生此錯誤:
Error: VM Exception while processing transaction: reverted with reason string 'Initializable: contract is already initialized'
但是當我嘗試使用以下方法在測驗中捕獲錯誤時:
assert.throws(async () => {
await sendTx(newProxyAddr, false, 'initialize', [0, nullAddr]);
}, Error, 'Thrown');
...,它告訴我:
AssertionError: expected [Function] to throw an error
我錯過了什么嗎?
謝謝!
uj5u.com熱心網友回復:
您應該將 Node.js assert.rejects(asyncFn[, error][, message])
API 用于異步函式或 JS 承諾。
assert.throws
呼叫getActual(promiseFn)
不會await
的函式promiseFn
,請參閱v14.19.3/lib/assert.js#L899
assert.rejects
呼叫await waitForActual(promiseFn)
將等待promiseFn
,請參閱v14.19.3/lib/assert.js#L909
例如
const assert = require('assert');
async function sendTx() {
throw new Error('error happens');
}
(async () => {
await assert.rejects(
async () => {
await sendTx();
},
{
name: 'Error',
message: 'error happens',
},
);
})();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/482683.html
標籤:javascript 节点.js 测试 mocha.js 断言
上一篇:如何在不并行運行karate-junit5的情況下切換報告備份
下一篇:數獨謎題測驗