安全帽,给予不切实际的平衡
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
balanceBefore
和balanceAfter
是BigNumber,没有.toString()
他们给了我十六进制代码。
事实是,这些数字是不现实的...为什么?
以太坊余额以 wei 单位表示。您需要将它们转换为人类可读的小数,以便理解它们。 Ethers 库应该有一个效用函数,或者你可以将数字除以 10 exp 18
.
import { ethers } from "ethers";
let price = ethers.utils.formatUnits(balance.toString(), "ether");
实际上我正在尝试使用 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
balanceBefore
和balanceAfter
是BigNumber,没有.toString()
他们给了我十六进制代码。
事实是,这些数字是不现实的...为什么?
以太坊余额以 wei 单位表示。您需要将它们转换为人类可读的小数,以便理解它们。 Ethers 库应该有一个效用函数,或者你可以将数字除以 10 exp 18
.
import { ethers } from "ethers";
let price = ethers.utils.formatUnits(balance.toString(), "ether");