1703879184
1703879185
1703879186
1703879187
这里,首先为CovertLib库和MetaCoin合约创建抽象。无论使用哪个网络,先部署ConvertLib库,然后把库接入MetaCoin网络,最后部署MetaCoin网络。
1703879188
1703879189
为了运行移植文件,即部署该合约,运行如下命令:
1703879190
1703879191
1703879192
1703879193
1703879194
上述代码表明truffle在开发网络上运行移植。如果不提供—network选项,则默认使用名为development的网络。
1703879195
1703879196
在运行前面的命令之后,会发现truffle将在artifacts文件中自动更新ConvertLib库和MetaCoin合约地址,并更新链接。
1703879197
1703879198
下面是可以提供给migrate子命令的一些其他重要选项:
1703879199
1703879200
·—reset。从最初开始运行所有移植(而非从上一个移植结束之后开始运行)。
1703879201
1703879202
·-f number。从一个特定移植运行合约。
1703879203
1703879204
1703879205
可以使用truffle networks命令实时在不同的网络中发现项目的合约地址和库。
1703879206
1703879207
1703879208
1703879209
1703879211
区块链项目开发指南 8.4.6 单元测试合约
1703879212
1703879213
单元测试是一种应用测试类型。单元是一个应用的最小可测试部分,在单元测试过程中单元被单个独立地进行测试。单元测试可以手动操作,但是通常都用自动操作。
1703879214
1703879215
truffle有一个单元测试框架,默认自动测试合约。在运行测试文件时,它提供一个干净的空间环境,也就是说,truffle在每个测试文件开始将重新运行所有移植,以保证有一套全新的合约用于测试。
1703879216
1703879217
truffle允许用两种不同的方式编写简单可管理的测试:
1703879218
1703879219
·在JavaScript中,从客户端执行合约。
1703879220
1703879221
·在Solidity中,从其他合约执行合约。
1703879222
1703879223
两种测试各有优缺点。我们将学习两种编写测试的方法。
1703879224
1703879225
所有测试文件都应置于./test目录中。truffle只运行扩展名为.js、.es、.es6、.jsx和.sol的测试文件。其他类型的文件都被忽略。
1703879226
1703879227
1703879228
在运行自动测试时,ethereumjs-testrpc比其他客户端的速度明显要快。此外,testrpc有一个特殊功能,可以让truffle节省90%的测试运行时间。推荐在常规开发和测试中使用testrpc;在现场或者生产网络中部署时,再次对go-ethereum或者另一个官方以太坊客户端运行测试。
1703879229
1703879230
1.在JavaScript中编写测试
1703879231
1703879232
truffle的JavaScript测试框架建立在Mocha之上。Mocha是一个用来编写测试的JavaScript框架,chai是一个assertion(声明)库。
1703879233
[
上一页 ]
[ :1.703879184e+09 ]
[
下一页 ]