truffle测试

Truffle测试

一、快速入门truffle

(1)创建项目工程

为 Truffle 项目创建新目录:
mkdir MetaCoin
cd MetaCoin
下载 (“unbox”) MetaCoin box:
truffle unbox metacoin

在这里插入图片描述

在操作完成之后,就有这样的一个项目结构:

(2)项目结构

  1. contracts/MetaCoin.sol: 这是一个用 Solidity 编写的 MetaCoin 代币 智能合约。注意他还引用了目录下的另外一个合约文件 contracts/ConvertLib.sol
  2. contracts/Migrations.sol: 这是一个单独的 Solidity 文件,用来管理和升级智能合约. 每一个工程都有这样的一个文件,并且通常不需要编辑它。
  3. migrations/1_initial_migration.js: 这是一个部署脚本,用来部署 Migrations 合约,对应 Migrations.sol 文件。
  4. migrations/2_deploy_contracts.js: 这是一个部署脚本,用来部署 MetaCoin 合约. (部署脚本的运行是有顺序的,以2开头的脚本通常在以1开头的脚本之后运行)
  5. test/TestMetacoin.sol: 这是一个用Solidity编写的测试用例文件,用来检查合约是否像预期一样工作。
  6. test/metacoin.js : 这是一个用JavaScript编写的测试用例脚本,用途和上面一样。
  7. truffle-config.js (之前是 truffle.js): Truffle 配置文件, 用来设置网络信息,和其他项目相关的设置。当我们使用内建的默认的Truffle命令时,这个文件留空也是可以的。

(3)使用测试

运行 JavaScript 测试用例
truffle test ./test/metacoin.js

在这里插入图片描述

(4)编译合约

编译智能合约:
truffle compile

在这里插入图片描述

(5)使用 Truffle Develop 部署合约

为了部署我们的合约,我们需要连接到区块链网络。Truffle 提供了一个内置的个人模拟区块链,它可以帮助我们用来测试。注意,这个区块链是内地在我们本地的系统里面,他不和以太坊的组网进行连接。

我们可以使用Truffle Develop来创建区块链,并与之交互。

运行 Truffle Develop:
truffle develop

在这里插入图片描述

这也显示了10个账号,和他们对你的私钥,这些账号可以用来和区块链进行交互

在 truffle(develop)> 提示符(因为提供了一个交互式控制台)下, Truffle 的命令可以不带前缀 truffle 执行。比如,可以直接输入compile 来执行truffle compile,以及直接输入 migrate 来部署编译的智能合约到区块链(相当于truffle migrate):

migrate

在这里插入图片描述

(6)通过 Ganache 部署

除了用上面的 Truffle Develop,还可以选择使用 Ganache, 这是一个桌面应用,他同样会创建一个个人模拟的区块链。 对于刚接触以太坊的同学来说,Ganache 会更容易理解,因为他把所有的信息,都输在前端的界面。

不像 Truffle Develop 把链和控制台集成在一起,使用 Ganache 需要编辑配置文件,以便 Truffle 能链接 Ganache 实例。

  1. 下载安装 Ganache.
  2. 编辑器打开 truffle.js ,使用下面的内容:
module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*"
    }
  }
};

3.保存关闭配置文件。

4.启动Ganache

5.打开控制台,执行部署:

truffle migrate

在这里插入图片描述

在 Ganache 里,点击 “Transactions” 可以看到交易详情。

为了和合约进行交互,我们可以使用 Truffle 的控制台:truffle console, Truffle console 和 Truffle Develop 类似,仅仅是他们连接的链不一样而已,这里是连接 Ganache 。

truffle console

(7)合约交互

在 Truffle v5, 控制台支持 async/await 方法(同步方式), 这样让跟合约交互更简单了,方法如下:

  • 从获取部署合约实例 及获取账号列表 开始:

    truffle(development)> let instance = await MetaCoin.deployed()
    truffle(development)> let accounts = await web3.eth.getAccounts()
    
  • 检查账号余额:

    truffle(development)> let balance = await instance.getBalance(accounts[0])
    truffle(development)> balance.toNumber()
    
  • 查看以太价值(其实就是调用了一个合约方法:合约方法里定义了一个metacoin 价值 2 ether):

    truffle(development)> let ether = await instance.getBalanceInEth(accounts[0])
    truffle(development)> ether.toNumber()
    
  • 发送一些 metacoin 到其他的账号 :

    truffle(development)> instance.sendCoin(accounts[1], 500)
    
  • 检查刚刚收款人的余额:

    truffle(development)> let received = await instance.getBalance(accounts[1])
    truffle(development)> received.toNumber()
    
  • 检查刚刚发送方的余额:

    truffle(development)> let newBalance = await instance.getBalance(accounts[0])
    truffle(development)> newBalance.toNumber()
    

二、实战演练

1.创建测试项目

mkdir truffle_demo && cd truffle

truffle init  && npm init -y


在这里插入图片描述

2.导入合约

// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;

contract test_demo {
    address public owner;
    uint public last_completed_test;

    constructor() {
        owner = msg.sender;
    }

    modifier restricted() {
        require(
            msg.sender == owner,
            "This function is restricted to the contract's owner"
        );
        _;
    }

    function setCompleted(uint completed) public restricted {
        last_completed_test = completed;
    }
}

3.编译合约

truffle  compile

在这里插入图片描述

4.编写测试脚本

const  test_demo = artifacts.require("test_demo");

if ("owner succeed",async  function[] {

const myConttract = await test_demo.deployed[];

await debug[myContract.owner()];

} );

5.测试合约

truffle test

const test_demo = artifacts.require(“test_demo”);

if (“owner succeed”,async function[] {

const myConttract = await test_demo.deployed[];

await debug[myContract.owner()];

} );

5.测试合约

truffle test

在这里插入图片描述

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Truffle是一个用于开发以太坊智能合约的开发框架,它提供了一套强大的工具和库,帮助开发者更轻松地编译、部署和测试智能合约。下面是Truffle命令的主要区域: 1. 编译(Compile):Truffle提供了编译智能合约的功能。通过运行`truffle compile`命令,Truffle会自动查找项目中的智能合约文件,并将其编译成字节码。 2. 部署(Migrate):使用Truffle可以方便地部署智能合约到以太坊网络。通过运行`truffle migrate`命令,Truffle会执行部署脚本,并将智能合约部署到指定的网络上。 3. 测试(Test):Truffle提供了一套测试框架,可以帮助开发者编写和运行智能合约的测试用例。通过运行`truffle test`命令,Truffle会执行项目中的测试脚本,并输出测试结果。 4. 控制台(Console):Truffle还提供了一个交互式的控制台,可以与智能合约进行交互。通过运行`truffle console`命令,可以进入Truffle控制台,并使用JavaScript与智能合约进行交互。 5. 资源管理(Box):Truffle提供了一些预置的项目模板,称为“Box”,可以帮助开发者快速搭建基于Truffle的项目。通过运行`truffle unbox <box-name>`命令,可以下载并初始化指定的项目模板。 6. 配置文件(Config):Truffle使用一个名为`truffle-config.js`(或`truffle.js`)的配置文件来管理项目的配置信息。开发者可以在配置文件中指定网络、编译器、部署脚本等相关配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

什么都想学。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值