Testing

在安全帽中測試自定義錯誤恢復

  • March 9, 2022

我有一個這樣描述的自定義錯誤:

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`)

這就是我的測試用於自定義錯誤

希望這可以幫助

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