1703879296
·有许多测试钩(hook),参见下面的例子。这些钩包括beforeAll、beforeEach、afterAll和afterEach,与JavaScript测试中Mocha提供的一样。在进行每个测试之前或之后,或者运行每个程序组之前或之后,可以使用这些钩进行设置和拆除。就像测试函数一样,每个钩都被当作单一交易执行。注意,一些复杂测试需要进行大量设置,可能会超过单一交易的gas上限。可以创建许多有不同后缀的钩,绕过这个限制。示例如下:
1703879297
1703879298
1703879299
1703879300
1703879301
1703879302
1703879303
1703879304
·测试合约还显示test函数和hook函数均有同样的合约状态。可以在测试前建立合约数据,在测试中使用那些数据,随后重置它,以便为下一个测试做准备。注意,就像JavaScript测试一样,上一个测试函数的状态将延续到下一个测试函数。
1703879305
1703879306
1703879307
truffle无法直接测试出合约是否应当抛出异常(抛出异常的合约说明有预期的错误)。读者可自行查找解决方案。
1703879308
1703879309
如何向测试合约发送以太币
1703879310
1703879311
为了向测试合约发送以太币,在合约中应当有一个返回uint的公共函数,叫作initialBalance。这可以直接被编写成函数或者公共变量。当测试合约被部署到网络中时,truffle将从测试账户发送该数量的以太币到测试合约。在测试状态下,测试合约随后可以使用那些以太币设置演示以太币交互。注意,initialBalance是可选项,而非必选项。例如:
1703879312
1703879313
1703879314
1703879315
1703879316
1703879317
truffle用不执行回退函数的方式发送以太币到测试合约,所以仍然可以使用测试中的回退函数进行高级测试。
1703879318
1703879319
3.运行测试
1703879320
1703879321
要运行测试脚本,请运行如下命令:
1703879322
1703879323
1703879324
1703879325
1703879326
或者,可以给想运行的特定文件指定一个路径。比如,
1703879327
1703879328
1703879329
1703879330
1703879331
1703879332
1703879333
1703879335
区块链项目开发指南 8.4.7 包管理
1703879336
1703879337
truffle包(package)是智能合约及其artifacts的集合。一个包可以依赖于零个或者多个包,即使用包的智能合约和artifacts。当使用自己项目的包时,在两个地方将会使用包的智能合约和artifacts:项目的合约里;项目的JavaScript代码(移植和测试)里。
1703879338
1703879339
用truffle创建的项目默认有特定的布局,这使它们能够当作包使用。truffle包中最重要的目录如下:
1703879340
1703879341
·/contracts。
1703879342
1703879343
·/build/contracts(由truffle创建)。
1703879344
1703879345
第一个目录是合约目录,其中包括原始Solidity合约;第二个目录是/build/contracts目录,其中以.json文件形式包含创建artifact。
[
上一页 ]
[ :1.703879296e+09 ]
[
下一页 ]