原文:
发布时间:2021年8月12日
译者:wuhai#7810
Solidity 开发人员:认识Smock V2,Solidity模拟库,Optimism与DeFi Wonderland的出色团队之间的合作。
智能合约测试历来……很难?如果不难,那么只是令人困惑。在 Solidity 的早期,测试合约的最佳方式是编写另一个合约来负责进行所有测试。由于大约 20 个不同的原因,这是一个糟糕的想法。我将列举一些最重要的:
你必须在 Solidity 中编写测试代码。
你不得不重新编译你的测试合约来改变你的测试。
你的测试合约和目标合约共享相同的链状态。
对于所有相关人员来说,这大费周章。基本上没问题,因为当时智能合约相对简单。但是,当然,缺乏测试基础设施意味着合约不会很复杂。
花了一段时间,但我们最终使用像 Truffle 这样的 JavaScript 测试框架来极大地改善测试体验。我们必须继承 chai 和 mocha 等工具的一些不错的特性。我们的测试至少变得有些清晰了。你实际上可以构建具有合理的复杂性的合约系统。
Hardhat 最终出现并改进了 Truffle 最先做的许多事情。但 Hardhat 的主要进步在于其插件系统——开发人员现在能够轻松地操作他们的测试环境,达到 Truffle 从未真正实现过的程度。
然而,在所有这些改进中,Solidity 开发人员仍然不得不处理一个绝对可怕的模式:模拟合约,用 Solidity 编写,只是为了能够对非常具体的功能进行单元测试。我是说,真的。以下是造成这种情况如此糟糕的几个原因:
你必须在 Solidity 中编写测试代码。
你必须重新编译你的测试合约才能改变你的测试。
你的测试合约和目标合约共享相同的链状态。
是的。总而言之。我们解决了这个问题。
介绍:Smock v2,JavaScript 中的合约模拟。比你想象的更强大。永远不要再用 Solidity 编写模拟合约。
特征
伪造任何合约

操作任何合约函数

创建有真实合约支持的模拟

在模拟中操作变量

还有更多……
我真的需要说别的吗?去试试看。它会改变你的生活。严肃地。

