一、Truffle是什么
Truffle 提供了一套标准的自动化测试框架,这就使得测试智能合约变得简单了。
这个框架允许你以两种不同的方式编写简单和可管理的测试:
- 使用 JavaScript 编写,从外部来执行你的合约,就像应用一样。
- 使用 Solidity 编写,进阶的外部执行合约,适用于 bare-to-the-metal(实在不知道怎么翻译) 场景。
二、怎么用
测试示例
pragma solidity ^0.4.11;
import "truffle/Assert.sol"; //truffle公共的库
import "truffle/DeployedAddresses.sol"; //truffle公共的库
import "../contracts/Adoption.sol";
contract TestAdoption {
Adoption adoption = Adoption(DeployedAddresses.Adoption());
// 测试 adopt()
function testUserCanAdoptPet() {
uint returnedId = adoption.adopt(8); //调用输入参数
uint expected = 8; //期望的结果
Assert.equal(returnedId, expected, "Adoption of pet ID 8 should be recorded."); //判断如果没有就抛出异常
}
// 单个测试
function testGetAdopterAddressByPetId() {
address expected = this;
address adopter = adoption.adopters(8);
Assert.equal(adopter, expected, "Owner of pet ID 8 should be recorded.");
}
// 所有的测试
function testGetAdopterAddressByPetIdInArray() {
address expected = this;
address[16] memory adopters = adoption.getAdopters();
Assert.equal(adopters[8], expected, "Owner of pet ID 8 should be recorded.");
}
}
Truffle 部署 编译 测试 智能合约 的 完整实践操作
文档
https://learnblockchain.cn/docs/truffle/testing/testing-your-contracts.html
https://www.jianshu.com/p/9e431843d450