繁体   English   中英

在使用 Hardhat 对 Goerli 进行分段测试期间无法设置 state 变量

[英]Unable to set state variables during staging test on Goerli using Hardhat

我可以在本地安全帽节点上的单元测试期间设置变量,但是在 Goerli 上相同的测试失败。

这是我的测试代码:

const { getNamedAccounts, deployments, ethers, network } = require("hardhat")
const { developmentChains, networkConfig } = require("../../helper-hardhat-config")
const { assert, expect } = require("chai")
const fs = require("fs")
const path = require("path")

developmentChains.includes(network.name)
    ? describe.skip
    : describe("Whoopy Staging Tests", function () {
          let whoopy,
              deployer,
              player,
              cloneAddress,
              clonedContract,
              txReceipt,
              tx,
              accountConnectedClone,
              manager,
              create

          const chainId = network.config.chainId

          beforeEach(async function () {

            accounts = await ethers.getSigners()
            deployer = accounts[0]
            player = accounts[1]
            await deployments.fixture(["all"])

            const dir = path.resolve(
                __dirname,
                "/Users/boss/hardhat-smartcontract-whoopy/artifacts/contracts/Whoopy.sol/Whoopy.json"
            )

            const file = fs.readFileSync(dir, "utf8")
            const json = JSON.parse(file)
            const abi = json.abi

            whoopy = await ethers.getContract("Whoopy", deployer)
            manager = await ethers.getContract("VRFv2SubscriptionManager", deployer)
            wf = await ethers.getContract("WhoopyFactory", deployer)

            tx = await (await wf.connect(player).createClone(player.address))
            txReceipt = await tx.wait(1)


            cloneAddress = await txReceipt.events[1].args._instance
            clonedContract = new ethers.Contract(cloneAddress, abi, player)
            accountConnectedClone = clonedContract.connect(player)
        })

        describe("Whoopy Tests", function () {
            beforeEach(async function () {
                create = await accountConnectedClone.createWhoopy(
                    "Test",
                    1,
                {
                    value: ethers.utils.parseUnits("10000000000000000", "wei"),
                    gasLimit: 3000000
                })
                console.log(create)
            })
            it("creates Whoopy correctly", async function () {

                const whoopyName = await accountConnectedClone.getWhoopyName()
                const num = await accountConnectedClone.getNum()

                expect(whoopyName).to.equal("Test")
                expect(num).to.equal(1)
            })
        })

这是我正在测试的 function:

  function createWhoopy( //to be created only once 
        string memory s_whoopyName,
        uint256 s_num,
    ) public payable restricted {
        whoopyName = s_whoopyName;
        num = s_num;
}

看起来很简单,但不知道为什么它不起作用。 我的帐户有足够的测试 eth 并且 goerli 在 Hardhat 配置中正确设置。 测试还原如下:

AssertionError: expected '' to equal 'Test'
      + expected - actual

      +Test

任何指导将不胜感激! 谢谢!

我想到了。 这是一件愚蠢的事情(正如我所想的那样)。 我忘了输入等待区块挖掘交易所需的await create.wait(6)

它在 Hardhat 上通过,因为 Hardhat 立即挖掘区块,但由于 Goerli 是一个实时测试网,你需要等待交易被挖掘。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM