打字猴:1.703879173e+09
1703879173 ·deployer.link(library,destinations)。将一个已经部署的库接入一个或者多个合约。destinations实参可以是一个或者多个合约抽象的数组。如果目的地(destination)里的任何合约都不依赖于接入的库,deployer就会忽略该合约。该方法返回一个承诺。
1703879174
1703879175 ·deployer.then(function(){})。用于运行任意部署步骤。在移植中,用该方法调用特定合约函数,添加、修改和重新组织合约数据。在回调函数中,使用合约抽象API部署和接入合约。
1703879176
1703879177 根据被部署网络的情况,可以有条件地分步骤部署。这样就要编写移植,以接收第二个参数network。许多热门的库已经被部署到主网络中,因此在使用这些网络时,我们不会再次部署库,而只是接入它们。示例如下:
1703879178
1703879179
1703879180
1703879181
1703879182 在项目中,有两个移植文件,即1_initial_migration.js和2_deploy_contracts.js。不要修改第一个文件,但可以对第二个文件进行修改。2_deploy_contracts.js文件的代码如下:
1703879183
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
1703879210 区块链项目开发指南 [:1703875398]
1703879211 区块链项目开发指南 8.4.6 单元测试合约
1703879212
1703879213 单元测试是一种应用测试类型。单元是一个应用的最小可测试部分,在单元测试过程中单元被单个独立地进行测试。单元测试可以手动操作,但是通常都用自动操作。
1703879214
1703879215 truffle有一个单元测试框架,默认自动测试合约。在运行测试文件时,它提供一个干净的空间环境,也就是说,truffle在每个测试文件开始将重新运行所有移植,以保证有一套全新的合约用于测试。
1703879216
1703879217 truffle允许用两种不同的方式编写简单可管理的测试:
1703879218
1703879219 ·在JavaScript中,从客户端执行合约。
1703879220
1703879221 ·在Solidity中,从其他合约执行合约。
1703879222
[ 上一页 ]  [ :1.703879173e+09 ]  [ 下一页 ]