Hooks

πŸ‘¨β€πŸ’Ό So we've got some cleanup at the end of our test and that's going to be problematic if that test fails. Vitest has the same concept of before/after Each/All as Playwright:
import { beforeEach, afterEach, beforeAll, afterAll } from 'vitest'

beforeAll(async () => {
	// do something before all tests
})

afterAll(async () => {
	// do something after all tests
})

beforeEach(async () => {
	// do something before each test
})

afterEach(async () => {
	// do something after each test
})
Of course those functions don't have to be async if you aren't doing anything asynchronous in them
πŸ¦‰ As mentioned, I typically prefer to not do setup in testing hooks, but this is an exception. There are in fact, no tests where I want the real console.error to be called. So by using a beforeEach hook, we can mock the console.error for every test and restore it after it's finished. Additionally, it would be a good idea to make certain there were no unexpected calls to console.error (we don't want to swallow errors and miss actual problems!).
Sadly, this is going to require a bit more work than what we were doing before, but it'll be better this way, I promise.
Oh, also, that mockRestore() idea is such a good idea generally that there's even a configuration option to do it by default. So we can remove that call and add that in . This will actually ensure our cleanup of the mock functions always run after each test which is exactly what we want.
vitest replaced SpyInstance with MockInstance so the videos will use SpyInstance, but you'll be using MockInstance.
Login to get access to the exclusive discord channel.
  • general
    npm install everytime I setup a new playground
    Duki 🌌:
    Is it normal that I have to run `npm install` in my playground directory, everytime I setup the play...
    • βœ…1
    2 Β· 14 days ago
  • general
    Welcome to EpicWeb.dev! Say Hello πŸ‘‹
    Kent C. Dodds β—† πŸš€πŸ†πŸŒŒ:
    This is the first post of many hopefully!
    • 18
    80 Β· 6 days ago
  • general
    Migration to Vite: Server-only module referenced by client
    Fabian 🌌:
    Hi, I'm working on migrating to Vite following the remix docs (https://remix.run/docs/en/main/guides...
    • βœ…1
    1 Β· 3 months ago
  • general
    Remix Vite Plugin
    Binalfew πŸš€ 🌌:
    <@105755735731781632> Now that remix officially supports vite (though not stable) what does it mean...
    • βœ…1
    3 Β· a year ago
  • general
    πŸ”­foundations
    Solutions video on localhost:5639 ?
    quang πŸš€ 🌌:
    Hi, so I'm having a hard time navigating (hopefully will be better with time) The nav on epicweb.de...
    • βœ…1
    9 Β· a year ago
  • πŸ§ͺfull stack testing
    Failing tests in full-stack-testing workshop
    Szabolcs 🌌:
    I am getting this warning in the testing workshop. ``` Warning: `ReactDOMTestUtils.act` is deprecate...
    • βœ…1
    2 Β· 4 months ago
  • general
    Epicshop is now social and mobile friendly!
    Kent C. Dodds β—† πŸš€πŸ†πŸŒŒ:
    I'm excited to announce that now the Epic Web workshops are mobile friendly! https://foundations.ep...
    • πŸŽ‰2
    0 Β· 5 months ago
  • πŸ’Ύdata
    general
    πŸ“forms
    πŸ”­foundations
    double underscore?
    trendaaang 🌌:
    What with the `__note-editor.tsx`? I don't see that in the Remix docs and I don't remember Kent talk...
    • βœ…1
    2 Β· 6 months ago
  • πŸ”­foundations
    πŸ’Ύdata
    general
    πŸ“forms
    πŸ”auth
    Native Logging
    trendaaang 🌌:
    I was thinking that it could be useful to log every CRUD operation to help track down errors. Is tha...
    • βœ…1
    6 Β· 7 months ago
  • general
    The video play is pretty laggy currently
    QzCurious 🌌:
    I thought I should tag you for this <@105755735731781632>. Please take a look if something wrong.
    • βœ…2
    9 Β· 8 months ago
  • general
    New Workshop Scheduled
    Kent C. Dodds β—† πŸš€πŸ†πŸŒŒ:
    Hey Epic Web devs! I wanted to let you know before everyone else on here: https://www.epicweb.dev/ev...
    • 2
    0 Β· 8 months ago