"owner" 帐户在 Hardhat 测试套件中以非零 DAI 余额开始
"owner" account start with a non-zero DAI balance in Hardhat test suite
我正在使用 Hardhat 的主网分支编写单元测试,对于测试,我想断言 owner
帐户的初始 DAI 余额为 0。但是当代码到达断言时 assert(ownerDai.isZero());
,断言失败。这是测试:
const { assert } = require("chai");
const { ethers } = require("hardhat");
const ERC20ABI = require('../external_ABI/ERC20.json'); // ERC20 abi for interacting with DAI
const DAI_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f";
describe("SimpleTest", function () {
it("Test that owner DAI balance is 0", async function () {
const provider = ethers.provider;
const [owner] = await ethers.getSigners();
const DAI = new ethers.Contract(DAI_ADDRESS, ERC20ABI, provider);
ownerDaiBalance = await DAI.balanceOf(owner.address);
assert(ownerDaiBalance.isZero()); // Assertion fails here
});
});
如果我打印 ownerDaiBalance
到控制台,它显示余额实际上等于 10008133730236507217。为什么 ownerDaiBalance
不是零开始?
我发现在区块 #14189520,这是我分叉的区块,owner
账户 实际上 在以太坊上有一些 DAI主网。它只有 10 美元的 DAI,但这解释了为什么我得到的初始余额是 1000813373023650721 而不是预期的 0。
我将 owner
添加到我的主网 Metamask 帐户,结果发现 owner
还有其他 ERC20 代币:
我想现在的 gas 费用太高了,任何人都不会考虑将这些资金转出。
无论如何,作为一种解决方法,我添加了 addr1
作为单元测试的第二个帐户,没有 有任何 DAI 开头:
const [owner, addr1] = await ethers.getSigners();
我正在使用 Hardhat 的主网分支编写单元测试,对于测试,我想断言 owner
帐户的初始 DAI 余额为 0。但是当代码到达断言时 assert(ownerDai.isZero());
,断言失败。这是测试:
const { assert } = require("chai");
const { ethers } = require("hardhat");
const ERC20ABI = require('../external_ABI/ERC20.json'); // ERC20 abi for interacting with DAI
const DAI_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f";
describe("SimpleTest", function () {
it("Test that owner DAI balance is 0", async function () {
const provider = ethers.provider;
const [owner] = await ethers.getSigners();
const DAI = new ethers.Contract(DAI_ADDRESS, ERC20ABI, provider);
ownerDaiBalance = await DAI.balanceOf(owner.address);
assert(ownerDaiBalance.isZero()); // Assertion fails here
});
});
如果我打印 ownerDaiBalance
到控制台,它显示余额实际上等于 10008133730236507217。为什么 ownerDaiBalance
不是零开始?
我发现在区块 #14189520,这是我分叉的区块,owner
账户 实际上 在以太坊上有一些 DAI主网。它只有 10 美元的 DAI,但这解释了为什么我得到的初始余额是 1000813373023650721 而不是预期的 0。
我将 owner
添加到我的主网 Metamask 帐户,结果发现 owner
还有其他 ERC20 代币:
我想现在的 gas 费用太高了,任何人都不会考虑将这些资金转出。
无论如何,作为一种解决方法,我添加了 addr1
作为单元测试的第二个帐户,没有 有任何 DAI 开头:
const [owner, addr1] = await ethers.getSigners();