npm 包 @openzeppelin/test-environment 使用教程

阅读时长 6 分钟读完

前言

在进行智能合约开发过程中,测试环境的搭建一直是一个比较繁琐的过程。@openzeppelin/test-environment 是一个 npm 包,它提供了测试智能合约所需的环境和工具,简化了测试过程,让测试变得更加简单和快速。该 npm 包的使用也十分简单,本篇文章将会带大家深入了解@openzeppelin/test-environment 的使用教程。

安装

使用 npm 命令安装该包:

使用

@openzeppelin/test-environment 主要提供了以下两个对象:

  • Environment:用于搭建测试环境。
  • ContractLoader:用于加载和部署合约。

下面,我们将分别介绍这两个对象的使用方法。

Environment

Environment 对象用于搭建测试智能合约所需的 TestRPC(本地简化版的以太坊节点) 实例和 web3.js 实例。使用该对象,我们可以在本地启动一个以太坊节点,来模拟部署和交易合约的过程。

-- -------------------- ---- -------
----- - --- ---------- ------------ ------------ - - --------------------------------------
----- - ------ - - ----------------

----- - ----- - - -------------------------
----- ------- - ------------ --------------- ----- -------- ---- ------- --

----- ---- - ----------------
----- ---- - --- ------------------------------ -- -- ------- - ------- ------

----- - ----------- - - ------------------------------------------
----- - ----------- - - --- ----------------------------------
--------------- -- ----------

-- ----
-------------- ----- ---------- -------- -- -
    ---------- ---- ---------- ----- -------- -- -
        -- ---- ----
    ---
---
展开代码

在上面的例子中,我们使用 Environment 对象实例化一个 beforeBlock,这将会新建一个空的测试区块链。在 beforeEach 中,我们简单地启动了一个 TestRPC 实例,连接到监听端口 8545。在第一行测试开始之前,我们调用了 beforeBlock(0) 来清空测试区块链。这样做可保证每个测试都在一个独立的区块中运行。

ContractLoader

ContractLoader 对象用于加载和部署智能合约。使用该对象,我们可以从指定的合约文件中加载合约,然后部署到测试环境中。

-- -------------------- ---- -------
----- - ------ - - ----------------
----- - -------------- - - ------------------------------------------

----- ---------- - --- ----------------------------- -- ---- ---------- ---

-- ----
-------------- ----- ---------- -------- -- -
    ---------- ---- ---------- ----- -------- -- -
        ----- ---------- - ----- ----------------------- --- -- ---- -- -- ---------- ----- --- -- -- ------
        ---------------------------- -- -- -- ---------- -- -------- ---------
    ---
---
展开代码

在上面的例子中,我们使用了 ContractLoader 对象加载了一个名为 MyContract 的合约。在测试代码中,我们使用 deploy 方法部署了该合约,并将一个数组 [1, 2, 3] 传递到了该合约的构造函数中。

小结

@openzeppelin/test-environment 是一个十分有用的 npm 包,它可简化智能合约的测试过程。使用该包,我们可以方便地搭建测试环境,加载和部署智能合约。在进行智能合约测试时,我们十分推荐使用 @openzeppelin/test-environment。

示例代码

完整的示例代码如下:

-- -------------------- ---- -------
----- - --- ---------- ------------ ------------ - - --------------------------------------
----- - ------ - - ----------------

----- - ----- - - -------------------------
----- ------- - ------------ --------------- ----- ------ -- ---- ------- --

----- ---- - ----------------
----- ---- - --- ------------------------------ -- -- ------- - ------- ------

----- - ----------- - - ------------------------------------------
----- - ----------- - - --- ----------------------------------
--------------- -- ----------

----- - -------------- - - ------------------------------------------
----- ---------- - --- ----------------------------- -- ---- ---------- ---

-------------- ----- ---------- -------- -- -
    ---------- ---- ---------- ----- -------- -- -
        ----- ---------- - ----- ----------------------- --- -- ---- -- -- ---------- ----- --- -- -- ------
        ---------------------------- -- -- -- ---------- -- -------- ---------
    ---
---
展开代码

参考链接

  1. npm @openzeppelin/test-environment
  2. OpenZeppelin Test Environment Documentation
  3. OpenZeppelin Test Helpers Documentation

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedac3cb5cbfe1ea0610998

纠错
反馈

纠错反馈