Ubuntu Truffle 创建及编译测试合约基础

Truffle:

在此声明,本文仅基于V3.2.1版本为基础,可适用于3.X版本,因为Truffle近几版改动也是较大,因此可能具有一定的时效性。


目录结构:

基于我上一篇文章配置后,项目目录将会如下:

Ubuntu Truffle 创建及编译测试合约基础_第1张图片

app:前端界面的展示,也就是localhost:8080时所展示的界面。

build:当执行truffle migrate时,会自动将contracts里面的.sol合约文件编译成.json文件。

contracts:合约文件储存地,.sol文件。

migrations:执行truffle migrate时的一些配置。

node_modules:运行时的核心代码。

test:用于测试合约,执行命令truffle test。


创建合约:

在./contracts目录下创建一个新的合约,起名为 SimpleStorage.sol,并添加以下代码:

pragma solidity ^0.4.0;  
contract SimpleStorage {  
    function multiply(uint a) returns(uint d) {
        return a * 7;
    }
} 
以上合约的意思是,随便收到一个数,并将它乘以7。


添加配置:

在./migrations目录下,打开 2_deploy_contracts.js 文件,并进行修改。

在开头,添加:

var SimpleStorage = artifacts.require("./SimpleStorage.sol");
在 module.exports = function(deployer) {......} 中添加:

deployer.deploy(SimpleStorage);

添加测试:

在./test目录下,新建 TestSimpleStorage.sol,用于测试上述合约。在Truffle中,可使用.js与.sol来测试合约,这里我仅使用.sol进行测试。

添加以下代码:

pragma solidity ^0.4.0;

import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/SimpleStorage.sol";

contract TestSimpleStorage {  
    uint someValue;
    uint value;
    function testmultiply(){
          someValue=3;
          SimpleStorage aaa=SimpleStorage(DeployedAddresses.SimpleStorage());
          value = aaa.multiply(someValue);
          uint expected = 21;
          Assert.equal(value, expected, "should 3*7=21");
    }
} 

运行测试:

在项目的根目录下打开控制台,输入 testrpc ,启动testrpc :

Ubuntu Truffle 创建及编译测试合约基础_第2张图片


执行truffle migrate,如果以前有编译过别的乱七八糟的合约,怕环境出问题,可以使用truffle migrate --reset:

Ubuntu Truffle 创建及编译测试合约基础_第3张图片


执行 truffle test,进行合约的测试,可以具体指明测试哪个,如不具体指明,则测试所有的:

Ubuntu Truffle 创建及编译测试合约基础_第4张图片

这是通过测试的截图。

可以试着将TestSimpleStorage.sol中的代码稍作替换:

uint expected = 21; -->uint expected = 22;
就可以看见出错的场景了:

Ubuntu Truffle 创建及编译测试合约基础_第5张图片


至于.sol具体怎么编译,以上代码表达什么,这里也就不赘述了,可以去参考官方文档 http://truffleframework.com/docs/getting_started/solidity-tests。



你可能感兴趣的:(区块链)