I am trying to test the following Express route which uses serveFiles as middleware.
import { serveFiles, setup } from 'swagger-ui-express';
export default (app: Express) => {
app.use('/api-docs/private', serveFiles(yamlFile), setup()
};
I attempted to simply mock the unit test but am getting a res.send is undefined error message
jest.mock('swagger-ui-express', () => ({
setup: jest.fn(),
serveFiles: jest.fn(),
}));
const app = express();
app.use(express.json());
describe('Test Private Route', () => {
beforeAll(() => {
jest.clearAllMocks();
const mockServe = swaggerUi.serveFiles;
(mockServe as jest.Mock).mockImplementation((req, res, next) => {
res.send({ message: 'test private' });
next();
});
swagger(app);
});
it('should retrieve something on private endpoint', async () => {
const resp = await request(app).get('/api-docs/private');
expect(resp.body).toEqual({ message: 'test private' });
});
How can I mock serveFiles so it returns resp.body?