Remix Stub

๐Ÿ‘จโ€๐Ÿ’ผ Our user profile page has some logic for what to display depending on who's looking at it. If you're looking at your own page, it shows a button for logout and edit profile. If you're looking at someone else's page, it shows a button to view their notes.
Go ahead and try with Kody's account:
Login with Kody: (kody / kodylovesyou) then open it up again.
We want to test that out, but the problem is those components rely on useLoaderData, so we need to mock that out.
So we're going to render our username route, but we also need to provide a loader so the useLoaderData hook has something to return. And we can do something to make it match the type of the real loader. Here's an example of how to do that:
import { json } from '@remix-run/node'
import { createRemixStub } from '@remix-run/testing'
import { render, screen } from '@testing-library/react'
import { default as RouteComponent, type loader } from './some-route'

// ...

const App = createRemixStub([
	{
		path: '/some-path',
		Component: RouteComponent,
		loader(): Awaited<ReturnType<typeof loader>> {
			return json({
				// we have to return the right types or TypeScript will be upset!
			})
		},
	},
])

render(<App initialEntries={['/some-path']} />)

// ...
That can help us make sure that our fake version of a loader matches up with the real one.
๐Ÿงโ€โ™‚๏ธ I already started this test, but rendering the <UsernameRoute /> component doesn't work since we use useLoaderData in it which requires a remix stub. So you're going to need to do that part.
๐Ÿ‘จโ€๐Ÿ’ผ That should be enough to get you going!
npx vitest username
Login to get access to the exclusive discord channel.
  • general
    Welcome to EpicWeb.dev! Say Hello ๐Ÿ‘‹
    Kent C. Dodds โ—† ๐Ÿš€๐Ÿ†๐ŸŒŒ:
    This is the first post of many hopefully!
    • 18
    81 ยท a month ago
  • 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 ยท a month 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 ยท 4 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 ยท 5 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 ยท 6 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 ยท 7 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 ยท 8 months ago