零、环境
1.依赖包
const { BN, constants, expectEvent, shouldFail } = require('openzeppelin-test-helpers');
2.全局变量
const { ZERO_ADDRESS,MAX_UINT256,MAX_INT256,MIN_INT256} = constants;
3.特殊的函数
// 每一个单元测试前(后)做的事情。
beforeEach(async function(){ ToDoSomeThing; });
afterEach(async function(){ ToDoSomeThing; });
// 总体的前面执行的函数,这个貌似没什么用
after(async function(){ ToDoSomeThing; });
before(async function(){ ToDoSomeThing; });
一、部署
1.加载合约对象
const ContractName = artifacts.require('ContractName');
2.部署新合约
this.contractName = await ContractName.new({from:accounts[0]});
3.读取已部署合约
this.contractName = await ContractName.deployed();
二、合约交互
1.读取合约地址
// 不能合并成一句话,否则读取不到合约信息!!!
var contractObj = ContractName.deployed();
var contractAddr = contractObj.address;
2函数交互
it("测试交易级函数", async function(){
var erc20 = ERC20.deployed();
await erc20.transfer(userAddr, amountBN, {
value: 0,
from: accounts[0]
});
(await erc20.balanceOf(userAddr)).should.be.bignumber.equal(amountBN,'Error String');
});
3.捕获日志
it('测试捕获日志', async function(){
var erc20 = ERC20.deployed();
const