Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

197
Views
Why is code coverage inadequate for my controller?

I have below method in my controller. How can I test it? Annotation coverage is failing. Actually I am not able to define code for coverage in jest file.

What parameter I should add in my test file and pass to cover it?

 @Post('upload')
    @UseInterceptors(
        FileInterceptor('image', {
            storage: diskStorage({
                destination: './uploads',
                filename(_, file, callback) {
                    const randomName = Array(32)
                        .fill(null)
                        .map(() => Math.round(Math.random() * 16).toString(16))
                        .join('');
                    return callback(null, `${randomName}${extname(file.originalname)}`);
                },
            }),
        })
    )
    uploadFile(@UploadedFile() file) {
        return {
            url: `http://localhost:2300/api/inventory/uploads/${file.filename}`,
            originalFileName: `${file.originalname}`,
        };
    }

It is working perfectly. I wrote this jest test case for same.

   it('Single file upload', async () => {
            const response = await controller.uploadFile(mockFile);
            const fileService = new InventoryController(service);
            expect(response).toBeTruthy();
            expect(response).toStrictEqual(
            expect.objectContaining({
                        originalFileName: expect.any(String),
                        url: expect.any(String),
                    }),
            );
        });

This is successful but coverage is failing for this line.

 @UseInterceptors(
            FileInterceptor('image', {
                storage: diskStorage({
                    destination: './uploads',
                    filename(_, file, callback) {
                        const randomName = Array(32)
                            .fill(null)
                            .map(() => Math.round(Math.random() * 16).toString(16))
                            .join('');
                        return callback(null, `${randomName}${extname(file.originalname)}`);
                    },
                }),
            })
        )
       
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

What I would do here if code coverage is an absolute must on all lines with unit tests, is move the filename function to a separate file that exports the method so it can be tested directly.

During unit tests, enhancers aren't called, only created, so you won't get any coverage other than the initial "yeah, this decorator works" kind of coverage. For this inner callback, you'll need a separate function.

The other option, if code coverage isn't as important a metric, would be to test this in an e2e test. That way you know for certain this works as intended

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!