Home > OS >  How to validate catch block of a function in Jest?
How to validate catch block of a function in Jest?

Time:02-02

I have a basic stringify function that looks like this ->

export const stringify = <T>(value: T) => {
  try {
    return JSON.stringify(value);
  } catch(error){
    return ''
  }
}

I want to write a test that can cover the catch block of the function. I've tried adding such a test ->

it('should be able to check for errors', async () => {
  await expect(stringify('')).rejects.toThrow()
})

But this test keeps throwing errors about the function not being a promise. The function isn't going into the catch block at all.

How do I test the catch block?

CodePudding user response:

There is no need to use async/await in this test. Also when there is an error you are returning '' from catch block, meaning your function will not throw anything.

Something like will work for your case

it('should be able to check for errors', () => {
  expect(stringify(<error value>)).toBe('')
})

CodePudding user response:

Expect the function definition to Throw

const functionDef = () => {
    throw new TypeError("Error Message");
};

test("Test description", () => {  
  expect(functionDef).toThrow(TypeError);
  expect(functionDef).toThrow("Error Message");
});
  • Related