Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
@jest-mock/express
Advanced tools
A lightweight Jest mock for unit testing Express
Installation:
yarn add --dev @jest-mock/express
npm install --save-dev @jest-mock/express
Importing:
import { getMockReq, getMockRes } from '@jest-mock/express'
getMockReq
getMockReq
is intended to mock the req
object as quickly as possible. In its simplest form, you can call it with no arguments to return a standard req
object with mocked functions and default values for properties.
const req = getMockReq()
To create a mock req
with provided values, you can pass them to the function in any order, with all being optional. The advantage of this is that it ensures the other properties are not undefined
. Loose type definitions for standard properties are provided, custom properties ([key: string]: any
) will be passed through to the returned req
object.
// an example GET request to retrieve an entity
const req = getMockReq({ params: { id: '123' } })
// an example PUT request to update a person
const req = getMockReq({
params: { id: 564 },
body: { firstname: 'James', lastname: 'Smith', age: 34 },
})
For use with extended Requests, getMockReq
supports generics.
interface AuthenticatedRequest extends Request {
user: User
}
const req = getMockReq<AuthenticatedRequest>({ user: mockUser })
// req.user is typed
expect(req.user).toBe(mockUser)
getMockRes
getMockRes
will return a mocked res
object with Jest mock functions. Chaining has been implemented for the applicable functions.
const { res, next, clearMockRes } = getMockRes()
All of the returned mock functions can be cleared with a single call to mockClear
. An alias is also provided called clearMockRes
.
const { res, next, mockClear } = getMockRes()
beforeEach(() => {
mockClear() // can also use clearMockRes()
})
It will also return a mock next
function for convenience. next
will also be cleared as part of the call to mockClear
/clearMockRes
.
To create mock responses with provided values, you can provide them to the function in any order, with all being optional. Loose type definitions for standard properties are provided, custom properties ([key: string]: any
) will be passed through to the returned res
object.
const { res, next, clearMockRes } = getMockRes({
locals: {
user: getLoggedInUser(),
},
})
For use with extended Responses, getMockRes
supports generics.
interface CustomResponse extends Response {
locals: {
sessionId?: string
isPremiumUser?: boolean
}
}
const { res } = getMockRes<CustomResponse>({
locals: {
sessionId: 'abcdef',
isPremiumUser: false,
},
})
// res.locals is typed
expect(res.locals.sessionId).toBe('abcdef')
expect(res.locals.isPremiumUser).toBe(false)
A full example to test a controller could be:
// generate a mocked response and next function, with provided values
const { res, next } = getMockRes({
locals: {
isPremiumUser: true,
},
})
test('will respond with the entity from the service', async () => {
// generate a mock request with params
const req = getMockReq({ params: { id: 'abc-def' } })
// provide the mock req, res, and next to assert
await myController.getEntity(req, res, next)
expect(res.json).toHaveBeenCalledWith(
expect.objectContaining({
id: 'abc-def',
}),
)
expect(next).toBeCalled()
})
FAQs
A lightweight Jest mock for unit testing Express
The npm package @jest-mock/express receives a total of 210,780 weekly downloads. As such, @jest-mock/express popularity was classified as popular.
We found that @jest-mock/express demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.