Search code examples
javascriptunit-testingsolidity

UNIT Test Error: No Contract deployed with name Raffle


This is the section of my unit testing... I've been working on this problem for the last few hours. I couldn't, however... I think the error is in const { deployer } = await getNamedAccounts() this line. Raffle contract isn't recognized... (Note- All the deployments are working correctly... )

    !developmentChains.includes(network.name)
        ? describe.skip()
        : describe("Raffle UNIT test", async () => {
              let raffle, vrfCoordinatorV2Mock
              const chainId = network.config.chainId
              beforeEach(async () => {
                  const { deployer } = await getNamedAccounts()
                  await deployments.fixture(["all"])
                  raffle = await ethers.getContract("Raffle", deployer)
                  vrfCoordinatorV2Mock = await ethers.getContract("VRFCoordinatorV2Mock", deployer)
              })
              describe("Constructor function", async () => {
                  it("Initializes the raffle correctly.", async () => {
                      const raffleState = await raffle.getRaffleState()
                      const interval = await raffle.getInterval()
    
                      assert.equal(raffleState.toString(), "0")
                      assert.equal(interval.toString(), networkConfig[chainId]["interval"])
                  })
              })
          })

ERROR that I got...

 ~/b/JSweb3_2/smart-contract_lottery  on main !2  hh test                                                      ✔  took 5s  system    at 07:27:25 am 


  Raffle UNIT test
    Constructor function
Development chain detected! Deploying mocks
Mocks deployed!!!...
---------------------!--!--!---------------------
      1) "before each" hook for "Initializes the raffle correctly."
  0 passing (428ms)
  1 failing

  1) Raffle UNIT test
       "before each" hook for "Initializes the raffle correctly.":
     Error: No Contract deployed with name Raffle
      at Object.getContract (node_modules/@nomiclabs/hardhat-ethers/src/internal/helpers.ts:447:11)
      at processTicksAndRejections (node:internal/process/task_queues:96:5)
      at runNextTicks (node:internal/process/task_queues:65:3)
      at listOnTimeout (node:internal/timers:528:9)
      at processTimers (node:internal/timers:502:7)
      at Context.<anonymous> (test/unit/Raffle.test.js:16:24)

I AM FOLLOWING A CORDING TUTOTIAL.


Solution

  • I believe you're following Patrick's course, have you checked if your deploy scripts are executing or not before running tests? You can do console logs in scripts and be sure that they are exporting tags. for example,

    module.exports.tags = ['all', 'mocks'];