测试Solidity合约的Truffle JS代码的基本框架:

文章 , 技术分享
427 0

先使用Truffle init初始化文件

truffle放合约代码区

合约部署代码区

测试代码编写

设置truffle和ganache进行连接

运行truffle test


初始化Truffle项目

当你使用 truffle init 命令初始化一个Truffle项目时,会生成以下几个文件夹:

  1. contracts 文件夹:这个文件夹是用来存放 Solidity 合约文件的地方。你的项目中的每个合约都应该存放在这个文件夹中。当你使用 truffle compile 命令编译合约时,编译后的合约文件将生成在 build/contracts 文件夹中。
  2. migrations 文件夹:这个文件夹用于存放合约的部署脚本(migration scripts)。合约的部署脚本是以 JavaScript 文件的形式存在,用于在以太坊网络上部署和更新合约。Truffle 框架使用这些脚本来管理合约的部署和迁移。你可以在这个文件夹中创建和管理部署脚本。
  3. test 文件夹:这个文件夹用于存放合约的测试脚本。在这里,你可以编写用于测试合约功能和逻辑的 JavaScript 测试脚本。Truffle 框架提供了一组强大的工具和库,用于编写和执行测试,确保合约的正确性和稳定性。
  4. migrationstest 文件夹中的示例文件:Truffle 在这两个文件夹中都提供了一个示例文件,分别是 1_initial_migration.jssample-test.js。这些示例文件可以作为你编写自己的部署脚本和测试脚本的参考。
  5. build 文件夹:这个文件夹包含了通过编译合约生成的文件,包括 ABI(Application Binary Interface,应用二进制接口)、合约的字节码以及其他与合约相关的信息。Truffle 框架会自动将编译后的文件保存在这个文件夹中。

除了上述文件夹,还会生成一些其他的文件,如 truffle-config.js(或 truffle.js)和 package.json。这些文件用于配置 Truffle 项目的设置和依赖项管理。


当有多个部署文件时

当你在Truffle的migrations文件夹中只有一个部署脚本时,Truffle会默认执行该部署脚本中的内容。

Truffle会按照文件名的字典顺序来执行部署脚本。默认情况下,Truffle使用数字作为部署脚本文件名的前缀(如1_initial_migration.js),以确保它们按照正确的顺序执行。如果你只有一个部署脚本文件,它会是字典顺序中的第一个,因此会被默认执行。

你可以在部署脚本中使用Truffle提供的全局函数(如deployer.deploy())来部署合约。部署脚本可以包含多个合约的部署操作,或者其他你需要执行的任务。

如果你想要执行特定的部署脚本,你可以使用truffle migrate --f 命令来指定要执行的部署脚本的索引号。例如,truffle migrate --f 2将执行第二个部署脚本。

需要注意的是,Truffle会记录已经执行过的部署脚本,以便在后续的迁移中跳过这些已经执行的脚本,从而避免重复执行。如果你需要重新执行部署脚本,可以使用--reset选项,例如truffle migrate --reset

总结起来,当只有一个部署脚本文件存在时,Truffle会默认执行该部署脚本中的内容。你也可以通过命令行选项来指定要执行的部署脚本,或者使用--reset选项重新执行已经执行过的部署脚本。


如果你有多个测试文件

如果你有多个测试文件,Truffle提供了一种灵活的方式来执行这些测试文件。以下是一些你可以使用的方法:

  1. 执行所有测试文件:在命令行中运行 truffle test,Truffle将会执行所有位于 test 文件夹中的测试文件。它会按照文件名的字典顺序执行这些测试文件。
  2. 执行特定的测试文件:如果你只想执行特定的测试文件,可以在命令行中指定测试文件的路径,例如 truffle test ./test/myTest.js。这将只执行指定的测试文件。
  3. 按照文件名前缀顺序执行:Truffle会按照文件名的字典顺序执行测试文件。你可以在测试文件的文件名中使用数字前缀,例如 01_test.js02_test.js,以确保它们按照正确的顺序执行。
  4. 使用测试文件之间的依赖关系:如果你的测试文件之间有依赖关系,你可以在测试文件中使用 beforebeforeEach 钩子函数来设置和准备依赖项。这样,你可以确保测试文件按照正确的顺序执行,并在需要时共享依赖项。
  5. 组织测试文件:你可以在 test 文件夹中创建子文件夹来组织测试文件。Truffle会递归地执行所有子文件夹中的测试文件。这样,你可以根据需求组织和管理测试文件。

需要注意的是,Truffle使用Mocha测试框架来运行测试文件。因此,你可以在测试文件中使用Mocha提供的各种功能,例如 describeitbeforebeforeEach 等,以编写清晰、可维护的测试。

通过上述方法,你可以轻松地管理和执行多个测试文件,并确保它们按照正确的顺序执行。


如果有多个测试文件多个部署文件怎么执行?

部署指定合约:

  1. migrations 文件夹中,确保只有你想要部署的合约的部署脚本文件存在。
  2. 运行 truffle migrate --f 命令,其中 ` 是指定合约部署脚本的索引号。例如,truffle migrate --f 2` 将从第二个部署脚本开始部署合约。

执行指定的测试文件:

  1. test 文件夹中,确保只有你想要执行的测试文件存在。
  2. 运行 truffle test 命令,其中 ` 是指定的测试文件的路径。例如,truffle test ./test/myTest.js` 将只执行指定的测试文件。

需要注意的是,如果你只想测试特定的合约,确保只有该合约的部署脚本存在。这样,在运行 truffle migrate 时,Truffle只会部署你指定的合约。

类似地,确保只有你想要执行的测试文件存在,这样在运行 truffle test 时,Truffle只会执行你指定的测试文件。

通过使用这些选项,你可以精确地部署指定的合约并执行指定的测试文件,以便进行有针对性的测试。
重入合约的truffle书写演示

2023-08-08T10:06:44.png

最后更新 2023-08-08
评论 ( 0 )
OωO
隐私评论