Testing middleware with Jest: TypeError: this._headers.getAll is not a function
See original GitHub issueVerify canary release
- I verified that the issue exists in the latest Next.js canary release
Provide environment information
Operating System: Platform: darwin Arch: arm64 Version: Darwin Kernel Version 21.6.0: Mon Aug 22 20:20:05 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T8101
Binaries: Node: 18.9.0 npm: 8.19.1 Yarn: 1.22.19 pnpm: N/A
Relevant packages: next: 13.0.2-canary.0 eslint-config-next: N/A react: 18.2.0 react-dom: 18.2.0
What browser are you using? (if relevant)
No response
How are you deploying your application? (if relevant)
No response
Describe the Bug
Hello everybody,
I am currently having issues trying to test the middleware.ts
in my project, and to reproduce it, I’ve created a small project from next.js/examples/with-jest
template, and here is the repo.
The middleware:
export function middleware(req: NextRequest) {
console.log('Hello')
return NextResponse.next({headers: new Headers()})
}
The test:
describe('Middleware', () => {
it('middleware', async () => {
const res = await middleware(new NextRequest('http://localhost/'))
console.log('res', res)
})
})
Other findings:
I’ve also dug a little bit, and it seems that node_modules/next/server/web/spec-extension/cookies/response-cookies.ts:36:35
is expected to fail, I just don’t know in which circumstances:
Other things I’ve tried:
Changing jestEnvironment
to node
didn’t yield the expected result. I’ve done it by adding the following comment in the test:
/**
* @jest-environment node
*/
Thanks in advance
Expected Behavior
I expect to be able to test the middleware.
Link to reproduction
https://github.com/firatgh/nextjs-with-jest
To Reproduce
yarn test
Issue Analytics
- State:
- Created a year ago
- Reactions:7
- Comments:10 (1 by maintainers)
Same issue for me with Next13 on Netlify.
This happens for me in production when I upgrade to Next.js 13:
Literally just some text. This is on Netlify.