Jas*_*ran 5 mocha.js ethereum ethers.js hardhat
我正在使用 Hardhat 的主网分支在 Hardhat 中编写单元测试,但是一项测试的结果似乎会影响未来的测试并导致我的断言失败。我正在使用 Alchemy 和区块 #14189520 进行分叉。
例如:
it("Test 1", async function () {
const provider = ethers.provider;
const [owner, addr1] = await ethers.getSigners();
// Assert owner has 1000 ETH to start
ownerBalance = await provider.getBalance(owner.address);
expectedBalance = ethers.BigNumber.from("10000000000000000000000");
assert(ownerBalance.eq(expectedBalance));
// Send 1 Ether to addr1
sendEth(1, owner, addr1);
});
it("Test 2", async function () {
const provider = ethers.provider;
const [owner, addr1] = await ethers.getSigners();
// ownerBalance is now only 999 Eth because of previous test
ownerBalance = await provider.getBalance(owner.address);
});
Run Code Online (Sandbox Code Playgroud)
有没有办法重置主网分叉,以便每个测试从新的分叉状态开始?
您可以使用hardhat_resetinbeforeEach()方法重置主网分叉,如下所示:
beforeEach(async function () {
await network.provider.request({
method: "hardhat_reset",
params: [
{
forking: {
jsonRpcUrl: <ALCHEMY_URL>,
blockNumber: <BLOCK_NUMBER>,
},
},
],
});
});
it("Test 1", async function () {
...
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用此方法从不同的块号进行分叉或仅禁用分叉。这是 Hardhat 文档中的相关部分。
| 归档时间: |
|
| 查看次数: |
2834 次 |
| 最近记录: |