Testing
在安全帽中測試自定義錯誤恢復
我有一個這樣描述的自定義錯誤:
error AlreadyListed(address nftAddress, uint256 tokenId);
在我的測試中,我想檢查它是否被拋出:
expect(await nftMarketplace.listItem(basicNft.address, TOKEN_ID, PRICE)).to.be.revertedWith(`AlreadyListed`)
但是,這當然失敗了:
Error: VM Exception while processing transaction: reverted with custom error 'AlreadyListed("0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", 0)
我需要用引號等進行字元串插值,還是有更好的方法?這看起來很難看:
expect(await nftMarketplace.listItem(basicNft.address, TOKEN_ID, PRICE)).to.be.revertedWith(`AlreadyListed("${basicNft.address}", ${TOKEN_ID})`)
嘗試移動.
await
_expect
例如await expect(nftMarketplace.listItem(basicNft.address, TOKEN_ID, PRICE)).to.be.revertedWith(`AlreadyListed`)
這就是我的測試用於自定義錯誤
希望這可以幫助