# Highly Optimistic 开发者博客#03:介绍Smock v2 **Published by:** [妈咪妈咪哄](https://paragraph.com/@202288/) **Published on:** 2022-08-04 **URL:** https://paragraph.com/@202288/highly-optimistic-03-smock-v2 ## Content 原文: https://medium.com/ethereum-optimism/the-highly-optimistic-dev-blog-03-introducing-smock-v2-d252441994a8 发布时间:2021年8月12日 作者:Kelvin Fichter 译者: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 编写模拟合约。 特征 伪造任何合约操作任何合约函数创建有真实合约支持的模拟在模拟中操作变量还有更多…… 我真的需要说别的吗?去试试看。它会改变你的生活。严肃地。 https://github.com/defi-wonderland/smock ## Publication Information - [妈咪妈咪哄](https://paragraph.com/@202288/): Publication homepage - [All Posts](https://paragraph.com/@202288/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@202288): Subscribe to updates