Smock:Solidity 智能合约测试的革命性工具

Smock:Solidity 智能合约测试的革命性工具

smock The Solidity mocking library smock 项目地址: https://gitcode.com/gh_mirrors/smo/smock

项目介绍

Smock 是一款专为 Hardhat 设计的 Solidity 智能合约模拟库。它允许开发者在 JavaScript 或 TypeScript 中完全创建模拟合约,从而彻底摆脱繁琐的 Solidity 模拟合约编写。Smock 的灵感来源于 sinonsinon-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 匹配器,帮助开发者轻松编写断言。
  • 动态操作:通过 fakesmocks 功能,开发者可以动态修改合约的行为和状态。
  • 兼容性强:完全兼容 TypeScript 和 TypeChain,提供强大的类型支持。
  • 活跃的社区支持:项目由 Optimism PBCDeFi 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 PBCDeFi Wonderland 维护,感谢所有贡献者的支持。


Smock 的出现,为 Solidity 智能合约的测试带来了革命性的变化。无论你是智能合约开发者还是测试工程师,Smock 都能极大地提升你的工作效率。快来尝试 Smock,体验智能合约测试的新境界吧!

smock The Solidity mocking library smock 项目地址: https://gitcode.com/gh_mirrors/smo/smock

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋或依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值