在 WebStorm 中调试 hardhat solidity 测试

Debug hardhat solidity tests In WebStorm

在使用 npx hardhat test 在控制台中进行 运行ning Hardhat 测试后,我决定能够设置断点将帮助我更快地迭代。

如何让 Webstorm 运行 由 npx hardhat test 启动的底层函数,以便我可以使用内置的调试器?

从那以后,我发现了安全帽 运行 引擎盖下的摩卡咖啡。

要在 WebStorm 中进行调试,您可以:

  1. 删除现有配置
  2. 创建新的 mocha 配置
  3. 设置'Node options'中的任何配置。注意:由于我正在分叉主网,因此需要一段时间才能开始测试,所以我添加了 --timeout 10000 因为 mocha 的默认超时仅为 2000ms
  4. select mocha 包,WebStorm 默认没有 select
  5. 设置您的测试文件模式
  6. const {ethers} = require('hardhat'); 添加到您的测试文件,因为它在 运行 时间内不再被 hardhat 注入。
  7. 如果没有出现绿色调试图标,我已成功关闭并重新打开 WebStorm。

此时我可以在我的测试文件中成功设置断点,但不能在 MyContract.sol 文件中设置。这并不奇怪,因为合约是在 运行.

之前编译的

  1. 为您的 Hardhat 项目创建或打开 package.json 文件。
  2. 添加 test NPM 运行 脚本并保存文件。您的 package.json 应该看起来像这样。
{
  "name": "hardhat-project",
  "scripts": {
    "test": "hardhat test"
  },
  "devDependencies": {
    "@nomiclabs/hardhat-ethers": "2.0.2",
    "@nomiclabs/hardhat-waffle": "2.0.1",
    "chai": "4.3.4",
    "ethereum-waffle": "3.4.0",
    "ethers": "5.4.4",
    "hardhat": "2.6.0"
  }
}
  1. 在编辑器窗格的左侧间距中,应该会出现一个小播放图标,单击它然后单击 Debug "test"

我在这里更详细地阅读了说明,但这是总体思路。 https://allendefibank.medium.com/how-to-debug-solidity-contracts-in-webstorm-hardhat-2ea0d3c4d582

如果您使用打字稿,则需要导入 ts-mocha 而不是 mocha