我使用硬帽子在本地部署我的合同,Ethers.js和Node.js运行一个Javascript文件,该文件对契约进行顺序调用,以模拟用户活动。当契约恢复时(例如,有人用零余额调用transfer()函数),我希望Ethers.js忽略它,而不是停止Javascript的执行。有办法这样做吗?
发布于 2022-06-10 21:18:17
是的,正如sola24在注释中所说的,您可以使用“尝试和捕捉”块,如下所示:
try {
//call contract
}catch(error){
//keep working on javascript code
}有关try/catch块这里。的详细信息
此外,您还可以使用openzepelin的测试助手,准确地说是expectRevert,只需通过npm安装:
npm install --save-dev @openzeppelin/test-helpers记住在测试文件中导入@openzeppelin/test-helpers并创建一个测试,如下所示:
it('reverts when transferring tokens you dont have', async function () {
// Conditions that trigger a require statement can be precisely tested
await expectRevert(
this.erc20.transfer(some_address, 5000, { from: sender }),
'Not enough funds',
);
});更多关于它的信息在他们的自述文件上。
https://ethereum.stackexchange.com/questions/129963
复制相似问题