Utilities for making testing [NestJS](https://docs.nestjs.com) applications easier.
npm install @golevelup/ts-sinonUtilities for making testing NestJS applications easier.
::: code-group
``bash [npm]`
npm install @golevelup/ts-sinon -D
`bash [yarn]`
yarn add @golevelup/ts-sinon -D
`bash [pnpm]`
pnpm add @golevelup/ts-sinon -D
:::
1. Import the createMock function into your test class.createMock
2. Create a variable and set it equal to the function with its generic type input.
3. Use the mock, Luke.
Here's an example with NestJS' ExecutionContext:
`ts
import { createMock } from '@golevelup/ts-sinon';
import { ExecutionContext } from '@nestjs/common';
describe('Mocked Execution Context', () => {
it('should have a fully mocked Execution Context', () => {
const mockExecutionContext = createMock
expect(mockExecutionContext.switchToHttp()).toBeDefined();
});
});
`
createMock generates all sub-properties as sinon.stub(), so you can chain method calls:
`ts
it('should correctly resolve mocked providers', async () => {
const request = {
key: 'val',
};
mockExecutionContext.switchToHttp.returns(
createMock
getRequest: () => request,
}),
);
const mockResult = mockExecutionContext.switchToHttp().getRequest();
expect(mockResult).toBe(request);
});
`
You can also easily provide your own mocks:
`ts``
const mockExecutionContext = createMock
switchToHttp: () => ({
getRequest: () => ({
headers: {
authorization: 'auth',
},
}),
getResponse: sinon.stub().returns({ data: 'res return data' }),
}),
});
::: warning Note
When providing your own mocks, the number of times a parent mock function was called includes the times needed to set your mocks.
:::