测试助手 - OpenZeppelin 文档

本文介绍了OpenZeppelin Test Helpers,这是一个用于以太坊智能合约测试的断言库。它提供了诸如检查交易是否因正确的原因而revert、验证事件是否以正确的值发出、跟踪余额变化、处理大数以及模拟时间流逝等功能。文章还提供了安装和使用示例,以及进一步学习的链接。

测试助手

用于以太坊智能合约测试的断言库。 确保你的合约表现符合预期!

概述

安装

npm install --save-dev @openzeppelin/test-helpers
Hardhat (以前称为 Buidler)

安装 web3hardhat-web3 插件。

npm install --save-dev @nomiclabs/hardhat-web3 web3

请记住按照 安装说明 中的说明将插件包含在你的配置中。

用法

在你的测试文件中导入 @openzeppelin/test-helpers 以访问不同的断言和实用程序。

const {
  BN,           // Big Number 支持
  constants,    // 常用常量,如零地址和最大整数
  expectEvent,  // 用于已发送事件的断言
  expectRevert, // 用于应失败的交易的断言
} = require('@openzeppelin/test-helpers');

const ERC20 = artifacts.require('ERC20');

describe('ERC20', function ([sender, receiver]) {
  beforeEach(async function () {
    // 捆绑的 BN 库与 web3 在底层使用的库相同
    this.value = new BN(1);

    this.erc20 = await ERC20.new();
  });

  it('reverts when transferring tokens to the zero address', async function () {
    // 可以精确地测试触发 require 语句的条件
    await expectRevert(
      this.erc20.transfer(constants.ZERO_ADDRESS, this.value, { from: sender }),
      'ERC20: transfer to the zero address',
    );
  });

  it('emits a Transfer event on successful transfers', async function () {
    const receipt = await this.erc20.transfer(
      receiver, this.value, { from: sender }
    );

    // 事件断言可以验证参数是否为预期参数
    expectEvent(receipt, 'Transfer', {
      from: sender,
      to: receiver,
      value: this.value,
    });
  });

  it('updates balances on successful transfers', async function () {
    this.erc20.transfer(receiver, this.value, { from: sender });

    // BN 断言通过 chai-bn 自动可用(如果使用 Chai)
    expect(await this.erc20.balanceOf(receiver))
      .to.be.bignumber.equal(this.value);
  });
});

了解更多

  • 前往 配置 了解高级设置。

  • 有关详细用法信息,请查看 API 参考

配置 →

  • 原文链接: docs.openzeppelin.com/te...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。