Smock:Solidity 智能合约测试的革命性工具
smock The Solidity mocking library 项目地址: https://gitcode.com/gh_mirrors/smo/smock
项目介绍
Smock 是一款专为 Hardhat 设计的 Solidity 智能合约模拟库。它允许开发者在 JavaScript 或 TypeScript 中完全创建模拟合约,从而彻底摆脱繁琐的 Solidity 模拟合约编写。Smock 的灵感来源于 sinon、sinon-chai 以及 Python 的 unittest.mock。目前,Smock 仅支持 Hardhat,但未来计划扩展到其他测试框架,如 Truffle。
项目技术分析
Smock 的核心技术在于其能够在 JavaScript 中动态创建和操作 Solidity 合约的模拟对象。通过 Smock,开发者可以轻松地:
- 创建模拟合约:无需编写额外的 Solidity 代码,直接在 JavaScript 中生成模拟合约。
- 操作函数行为:通过
fakes
功能,动态修改合约函数的行为。 - 修改内部变量:使用
mocks
功能,修改合约的内部状态变量。 - 断言调用:对合约函数的调用次数、参数等进行断言,确保测试的准确性。
此外,Smock 完全兼容 TypeScript 和 TypeChain,为开发者提供了强大的类型支持。
项目及技术应用场景
Smock 适用于以下场景:
- 智能合约测试:在开发智能合约时,Smock 可以帮助开发者快速创建和操作模拟合约,简化测试流程。
- 单元测试:通过 Smock,开发者可以轻松编写单元测试,确保合约的每个功能模块都能独立、正确地运行。
- 集成测试:在复杂的合约系统中,Smock 可以帮助开发者模拟各种外部依赖,确保整个系统的集成测试顺利进行。
项目特点
- 简化测试流程:无需编写额外的 Solidity 模拟合约,直接在 JavaScript 中完成所有测试工作。
- 强大的断言功能:内置丰富的 Chai 匹配器,帮助开发者轻松编写断言。
- 动态操作:通过
fakes
和mocks
功能,开发者可以动态修改合约的行为和状态。 - 兼容性强:完全兼容 TypeScript 和 TypeChain,提供强大的类型支持。
- 活跃的社区支持:项目由 Optimism PBC 和 DeFi Wonderland 维护,社区活跃,支持力度大。
快速开始
安装
你可以通过 npm 或 yarn 安装 Smock:
npm install @defi-wonderland/smock
基本使用
以下是一个简单的使用示例:
import { FakeContract, smock } from '@defi-wonderland/smock';
chai.should(); // 如果你喜欢 should 语法
chai.use(smock.matchers);
describe('MyContract', () => {
let myContractFake: FakeContract<MyContract>;
beforeEach(async () => {
...
myContractFake = await smock.fake('MyContract');
});
it('some test', () => {
myContractFake.bark.returns('woof');
...
myContractFake.bark.atCall(0).should.be.calledWith('Hello World');
});
});
文档
详细的文档可以在 这里 找到。
许可证
Smock 采用 MIT 许可证,你可以自由使用、修改和分发此软件。更多信息请参阅 LICENSE 文件。
贡献者
Smock 由 Optimism PBC 和 DeFi Wonderland 维护,感谢所有贡献者的支持。
Smock 的出现,为 Solidity 智能合约的测试带来了革命性的变化。无论你是智能合约开发者还是测试工程师,Smock 都能极大地提升你的工作效率。快来尝试 Smock,体验智能合约测试的新境界吧!
smock The Solidity mocking library 项目地址: https://gitcode.com/gh_mirrors/smo/smock
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考