npm 包 @ethereum-waffle/mock-contract 使用教程

阅读时长 5 分钟读完

在进行以太坊智能合约的开发过程中,我们需要经常进行合约的测试。而使用 @ethereum-waffle/mock-contract 这个库可以更加轻易地进行测试。该库可以模拟 Solidity 合约,从而可以快速地进行测试。

安装

使用 npm 进行安装:

使用说明

基本使用

在测试中创建一个 new MockContract() 实例之后,可以通过实例对象去模拟一个 Solidity 合约。

你可以使用 mockMyContract.instance 来获取 mock 合约的实例。

模拟函数

使用该库后,你可以通过下面的代码给合约添加一个函数:

在上述代码中,我们 mock 实现了 myFunction 函数,该函数接受 3 个参数,每个参数的类型是 uint256。同时,当这个函数被调用时,它会返回 42。

提供 Solidity 编译器的 ABI

为了让该库知道如何模拟合约的函数,你需要提供 Solidity 编译器生成的 ABI(Application Binary Interface)。例如:

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

可以使用 mock.ContractABI(ABI) 来载入合约的 ABI。

示例代码

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

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

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

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

结论

你可以使用 @ethereum-waffle/mock-contract 这个库来更方便地进行智能合约的测试。它提供了对 Solidity ABI 的支持,可轻松地模拟 Solidity 合约在测试中的行为。希望这个教程对你有所帮助。

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

纠错
反馈