You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
# Prevent catch assertions in tests (`no-try-expect`)
## Deprecated
This rule has been deprecated in favor of [`no-conditional-expect`](no-conditional-expect.md).
---
This rule prevents the use of `expect` inside `catch` blocks.
## Rule Details
Expectations inside a `catch` block can be silently skipped. While Jest provides an `expect.assertions(number)` helper, it might be cumbersome to add this to every single test. Using `toThrow` concisely guarantees that an exception was thrown, and that its contents match expectations.
The following patterns are warnings:
```js it('foo', () => { try { foo(); // `foo` may be refactored to not throw exceptions, yet still appears to be tested here. } catch (err) { expect(err).toMatch(/foo error/); } });
it('bar', async () => { try { await foo(); } catch (err) { expect(err).toMatch(/foo error/); } });
it('baz', async () => { try { await foo(); } catch (err) { expect(err).toMatchObject({ code: 'MODULE_NOT_FOUND' }); } }); ```
The following patterns are not warnings:
```js it('foo', () => { expect(() => foo()).toThrow(/foo error/); });
it('bar', async () => { await expect(fooPromise).rejects.toThrow(/foo error/); });
it('baz', async () => { await expect(() => foo()).rejects.toThrow( expect.objectContaining({ code: 'MODULE_NOT_FOUND' }), ); }); ```
|