我的智能合约必须检查OpenSea OpenStore合约的余额,所以我需要能够分叉多边形主网。我希望每个测试都使用相同的fork重新开始,所以我在beforeEach
中调用hardhat_reset
。但我得到了一个无法理解的错误:
"before each" hook for "<very first 'it' under first 'describe'>":
InvalidArgumentsError: Errors encountered in param 0: Invalid value undefined supplied to : HardhatNetworkConfig | undefined/forking: RpcForkConfig | undefined | undefined/jsonRpcUrl: string
我的代码看起来是这样的(有删节,用省略号填充标准样板(
import ....
import * as helpers from "@nomicfoundation/hardhat-network-helpers"
....
async function deployContract(addr=myAddr) {
await ethers.provider.send("hardhat_impersonateAccount", [addr])
helpers.setBalance(addr, "0x100000000000000000000")
const signer = await ethers.getSigner(addr)
const cf = await ethers.getContractFactory("MyContractName", signer)
contract = await cf.deploy()
}
beforeEach(async () => {
await network.provider.request({
method: "hardhat_reset",
params: [{
forking: {
url: "https://polygon-mainnet.g.alchemy.com/v2/" + apiKey,
blockNumber: 31911877
}
}]
})
const wallets = waffle.provider.getWallets()
wallet = wallets[0]
await deployContract()
})
请注意,如果我将forking
参数数据移动到我的hardhat.config.ts
,我就不会遇到这个问题——在这种情况下,测试执行得很好,只是因为在测试之间没有重置任何内容,所以第一个测试中执行的操作会打乱后面测试中的操作。
谢谢!
在forking
参数下,用jsonRpcUrl
替换url
我看到后才意识到这一点https://stackoverflow.com/a/71811223/19350337