打字猴:1.703879246e+09
1703879246
1703879247 ·contract()函数提供一个以太坊节点可用账户列表,可用于编写测试。
1703879248
1703879249
1703879250 由于truffle在后台使用Mocha,在不需要truffle功能时,还可以使用describe()运行正常的Mocha测试。
1703879251
1703879252 下面是truffle生成的,用于测试MetaCoin合约的默认测试代码。metacoin.js文件中的代码如下:
1703879253
1703879254
1703879255
1703879256
1703879257
1703879258
1703879259
1703879260 在上述程序代码中,所有合约的交互代码都是使用truffle-contract库编写的。
1703879261
1703879262 最后,truffle允许访问Mocha的配置,所以可以修改Mocha的行为。Mocha的配置在truffle.js文件的导出对象中被放在Mocha属性之下,例如:
1703879263
1703879264
1703879265
1703879266
1703879267 2.在Solidity中编写测试
1703879268
1703879269 Solidity测试代码在.sol文件中。使用Solidity写测试之前需要注意如下事项:
1703879270
1703879271 ·Solidity测试不能扩展自任何合约。这让测试尽可能小,用户还能完全控制自己编写的合约。
1703879272
1703879273 ·truffle提供一个默认的assertion库,但是可以根据需要随时修改这个库。
1703879274
1703879275 ·可以对任意以太坊客户端运行Solidity测试。
1703879276
1703879277 为了学习如何在Solidity中编写测试,让我们看看truffle生成的默认Solidity测试代码。TestMetacoin.sol文件的代码如下:
1703879278
1703879279
1703879280
1703879281
1703879282 上述代码的执行过程如下:
1703879283
1703879284 ·truffle/Assert.sol库提供Assert.equal()等Assertion函数。这是默认的assertion库,然而只要库与truffle测试运行者松散地整合,就可以触发正确的assertion事件,包括自己的assertion库。Assertion函数触发事件,并由truffle捕获,进而显示信息。这就是truffle中的Solidity assertion库的架构。可在Assert.sol中发现所有现有的Assertion函数(https://github.com/ConsenSys/truffle/blob/beta/lib/testing/Assert.sol)。
1703879285
1703879286 ·在导入路径truffle/Assert.sol中,truffle是包名。
1703879287
1703879288 ·已部署合约(即作为migrations一部分的部署合约)的地址在truffle/Deployed-Addresses.sol库中都可用。这由truffle提供,且在运行每个测试程序组之前重新编译并重新接入。这个库用DeployedAddresses.()的形式为所有已部署合约提供函数。这将返回一个地址,可用以访问合约。
1703879289
1703879290 ·为了使用已部署合约,必须将合约代码导入测试。在前面的例子里,注意导入“../contracts/MetaCoin.sol”。该导入与./test目录中的测试合约有关,为了发现MetaCoin合约,它会超出测试目录。然后使用该合约把地址投射给MetaCoin类型。
1703879291
1703879292 ·所有测试合约开头都是Test(使用大写T)。这对合约和测试助手以及项目合约(即测试中的合约)进行了区分,让测试者知道哪个合约代表测试版。
1703879293
1703879294 ·像测试合约名一样,所有测试函数开头都是test(使用小写t)。每个测试函数都被当作单一交易按照出现在测试文件(例如你的JavaScript测试)中的顺序执行。truffle/Assert.sol提供的Assertion函数触发事件,测试运行者评估以决定测试结果。Assertion函数返回一个Boolean,代表assertion的结果,可以用它从测试中提早返回,以防执行错误(即testrpc显示的错误)。
1703879295
[ 上一页 ]  [ :1.703879246e+09 ]  [ 下一页 ]