安全帽,给予不切实际的平衡

Hardhat, giving unrealistic balance

实际上我正在尝试使用 Hardhat/Ether/Chai 进行一些单元测试,我尝试测试购买后余额的减少。

这是我的代码:

it('Should buy the nft', async function () {
    const [buyerAddress] = await ethers.getSigners()
    const provider = ethers.provider
    const balanceBefore = await provider.getBalance(buyerAddress.address)
    await marketReady
      .connect(buyerAddress)
      .buyNFTFromEscrow(nftContractAddress, nftTokenId, { value: ethers.utils.parseEther('6') })
    const balanceAfter = await provider.getBalance(buyerAddress.address)
    console.log(balanceBefore.toString(), balanceAfter.toString())
  })

控制台日志输出:

9999986719269931896192 9999986523302573800272

balanceBeforebalanceAfter是BigNumber,没有.toString()他们给了我十六进制代码。

事实是,这些数字是不现实的...为什么?

以太坊余额以 wei 单位表示。您需要将它们转换为人类可读的小数,以便理解它们。 Ethers 库应该有一个效用函数,或者你可以将数字除以 10 exp 18.

import { ethers } from "ethers";

let price = ethers.utils.formatUnits(balance.toString(), "ether");