Truffle:高效自动化智能合约开发的利器,本文聚焦智能合约测试。
智能合约测试是高质量智能合约开发的核心环节。 为什么需要如此重视测试?因为智能合约处理的是价值,有时是巨额价值,这使得它们成为攻击者的目标。 您可不想看到您的项目最终沦为区块链墓地里的“幽灵”吧?
关键要点:
入门指南:
我们将创建一个名为 HashMarket 的简单基于智能合约的二手商品市场。
在终端中,定位到您要构建项目的文件夹。在该文件夹中,运行以下命令:
mkdir HashMarket cd HashMarket truffle init
您应该看到类似以下输出:
<code>Downloading... Unpacking... Setting up... Unbox successful. Sweet! Commands: Compile: truffle compile Migrate: truffle migrate Test contracts: truffle test</code>
您还会得到如下所示的文件结构:
<code>. ├── contracts │ └── Migrations.sol ├── migrations │ └── 1_initial_migration.js ├── test ├── truffle-config.js └── truffle.js</code>
关于这些文件,请参考之前的文章。简而言之,我们拥有基本的 truffle.js
文件以及用于进行初始区块链迁移的两个文件。
最简单的测试方法是在本地网络上进行。强烈建议使用 ganache-cli(以前称为 TestRPC)工具进行合约测试。
安装 ganache-cli(需要 Node 包管理器):
npm install -g ganache-cli
之后,打开一个单独的终端窗口或标签页并运行:
ganache-cli
您应该看到类似以下输出:
<code>Ganache CLI v6.1.0 (ganache-core: 2.1.0) ... (账户和私钥信息) ... Listening on localhost:8545</code>
这是 ganache-cli 为您创建的所有账户的列表。您可以使用任何您想要的账户,但这些账户将预加载以太币,这使得它们非常有用(因为测试需要以太币来支付 gas 费用)。
之后,转到您的 truffle.js
或 truffle-config.js
文件,并向您的配置中添加一个开发网络:
module.exports = { networks: { development: { host: "127.0.0.1", port: 8545, network_id: "*" } } };
首先,我们将编写 HashMarket 智能合约。我们将尽量保持其简单性,同时保留所需的功能。
HashMarket 是区块链上的 eBay。它允许卖家发布产品,买家使用以太币购买产品。它还允许卖家在产品未售出时将其移除。
在项目中的 contracts
文件夹中,创建一个新文件并将其命名为 HashMarket.sol
。在该文件中,添加以下代码:(此处省略了与原文相同的合约代码,避免重复)
您需要编写一个迁移文件,让 Truffle 知道如何将您的合约部署到区块链。进入 migrations
文件夹,创建一个名为 2_deploy_contracts.js
的新文件。在该文件中,添加以下代码:(此处省略了与原文相同的迁移文件代码,避免重复)
您可以使用 Solidity 或 JavaScript 进行智能合约测试。Solidity 在测试智能合约时可能更直观一些,但 JavaScript 提供了更多可能性。
为了开始测试,在项目中的 test
文件夹中,创建一个名为 TestHashMarket.sol
的文件。(此处省略了与原文相同的Solidity测试代码,避免重复)
Truffle 允许我们使用 JavaScript 进行测试,利用 Mocha 测试框架。(此处省略了与原文相同的JavaScript测试代码,避免重复)
关于使用 Truffle 测试智能合约的常见问题解答 (FAQ): (此处省略了与原文相同的FAQ部分,避免重复)
以上是松露:测试智能合约的详细内容。更多信息请关注PHP中文网其他相关文章!