# Highly Optimistic 开发者博客#03：介绍Smock v2

By [妈咪妈咪哄](https://paragraph.com/@202288) · 2022-08-04

---

原文：

[https://medium.com/ethereum-optimism/the-highly-optimistic-dev-blog-03-introducing-smock-v2-d252441994a8](https://medium.com/ethereum-optimism/the-highly-optimistic-dev-blog-03-introducing-smock-v2-d252441994a8)

发布时间：2021年8月12日

作者：[Kelvin Fichter](https://twitter.com/kelvinfichter)

译者：wuhai#7810

Solidity 开发人员：认识[Smock V2](https://github.com/defi-wonderland/smock)，Solidity模拟库，[Optimism与](https://twitter.com/optimismPBC)[DeFi Wonderland](https://twitter.com/DeFi_Wonderland)的出色团队之间的合作。

智能合约测试历来……很难？如果不难，那么只是令人困惑。在 Solidity 的早期，测试合约的最佳方式是编写_另一个_合约来负责进行所有测试。由于大约 20 个不同的原因，这是一个糟糕的想法。我将列举一些最重要的：

1.  你必须在 Solidity 中编写测试代码。
    
2.  你不得不重新编译你的测试合约来改变你的测试。
    
3.  你的测试合约和目标合约共享相同的链状态。
    

对于所有相关人员来说，这大费周章。基本上没问题，因为当时智能合约相对简单。但是，当然，缺乏测试基础设施意味着合约不会很复杂。

花了一段时间，但我们最终使用像 Truffle 这样的 JavaScript 测试框架来极大地改善测试体验。我们必须继承 chai 和 mocha 等工具的一些不错的特性。我们的测试至少变得有些清晰了。你实际上可以构建具有合理的复杂性的合约系统。

Hardhat 最终出现并改进了 Truffle 最先做的许多事情。但 Hardhat 的主要进步在于其插件系统——开发人员现在能够轻松地操作他们的测试环境，达到 Truffle 从未真正实现过的程度。

然而，在所有这些改进中，Solidity 开发人员仍然不得不处理一个绝对可怕的模式：**模拟合约，用 Solidity 编写**，只是为了能够对非常具体的功能进行单元测试。我是说，真的。以下是造成这种情况如此糟糕的几个原因：

1.  你必须在 Solidity 中编写测试代码。
    
2.  你必须重新编译你的测试合约才能改变你的测试。
    
3.  你的测试合约和目标合约共享相同的链状态。
    

是的。总而言之。我们解决了这个问题。

介绍：**Smock v2**，JavaScript 中的合约模拟。比你想象的更强大。永远不要再用 Solidity 编写模拟合约。

**特征**

**伪造任何合约**

![](https://storage.googleapis.com/papyrus_images/70268ee8f7661017347eea124b26af9c7459b4483a734c249172b211fc6d9a41.png)

**操作任何合约函数**

![](https://storage.googleapis.com/papyrus_images/a660583989896f71794b755a26b259eb5890f93c48d22579abcffa17a442d376.png)

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

![](https://storage.googleapis.com/papyrus_images/8f5b6c520b2e5dfe8181fad0668c0dba12e18491708466cf65abada95532e0e1.png)

**在模拟中操作变量**

![](https://storage.googleapis.com/papyrus_images/b62b29ddcd9d202981375e0b4a490be64f4622008a3d084aeb851996e98f6b37.png)

**还有更多……**

我真的需要说别的吗？去试试看。它会改变你的生活。严肃地。

[https://github.com/defi-wonderland/smock](https://github.com/defi-wonderland/smock)

---

*Originally published on [妈咪妈咪哄](https://paragraph.com/@202288/highly-optimistic-03-smock-v2)*
