Hardhat Testing – Why Are My Tests Failing Unexpectedly

bignumberhardhattestunittesting

This is code for my unit test scripts, I don't know where I am wrong.

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

!developmentChains.includes(network.name)
  ? describe.skip
  : describe("NFTMarketplace test", function () {
      4
      let nftMarketplaceContract, basicNftContract, nftMarketplace, basicNft
      const PRICE = ethers.utils.parseEther("1")
      const TOKEN_ID = 0
      beforeEach(async function () {
        accounts = await ethers.getSigners()
        deployer = accounts[0]
        player = accounts[1]
        await deployments.fixture(["all"])
        nftMarketplaceContract = await ethers.getContract("NftMarketplace")
        nftMarketplace = await nftMarketplaceContract.connect(deployer)
        basicNftContract = await ethers.getContract("BasicNft")
        basicNft = await basicNftContract.connect(deployer)
        await basicNft.mintNft()
        await basicNft.approve(nftMarketplaceContract.address, TOKEN_ID, PRICE)
      })
      describe("ListItem", function () {
        it("Lists nft", async function () {})
      })
    })

ERROR:

"before each" hook for "Lists nft":
     Error: cannot override "_hex","_isBigNumber","fromTwos","toTwos","abs","add","sub","div","mul","mod","pow","and","or","xor","mask","shl","shr","eq","lt","lte","gt","gte","isNegative","isZero","toNumber","toBigInt","toString","toHexString","toJSON" (operation="overrides", overrides=["_hex","_isBigNumber","fromTwos","toTwos","abs","add","sub","div","mul","mod","pow","and","or","xor","mask","shl","shr","eq","lt","lte","gt","gte","isNegative","isZero","toNumber","toBigInt","toString","toHexString","toJSON"], code=UNSUPPORTED_OPERATION, version=contracts/5.7.0)

Can someone help me with this error?

Best Answer

If it is approve() from ERC721 it only takes 2 arguments:

approve(address to, uint256 tokenId)

You need to remove PRICE

await basicNft.approve(nftMarketplaceContract.address, TOKEN_ID)
Related Topic