securityos/node_modules/eslint-plugin-jest/docs/rules/no-conditional-in-test.md

82 lines
1.6 KiB
Markdown
Raw Normal View History

2024-09-06 15:32:35 +00:00
# Disallow conditional logic in tests (`no-conditional-in-test`)
<!-- end auto-generated rule header -->
Conditional logic in tests is usually an indication that a test is attempting to
cover too much, and not testing the logic it intends to. Each branch of code
executing within a conditional statement will usually be better served by a test
devoted to it.
## Rule details
This rule reports on any use of a conditional statement such as `if`, `switch`,
and ternary expressions.
Examples of **incorrect** code for this rule:
```js
it('foo', () => {
if (true) {
doTheThing();
}
});
it('bar', () => {
switch (mode) {
case 'none':
generateNone();
case 'single':
generateOne();
case 'multiple':
generateMany();
}
expect(fixtures.length).toBeGreaterThan(-1);
});
it('baz', async () => {
const promiseValue = () => {
return something instanceof Promise
? something
: Promise.resolve(something);
};
await expect(promiseValue()).resolves.toBe(1);
});
```
Examples of **correct** code for this rule:
```js
describe('my tests', () => {
if (true) {
it('foo', () => {
doTheThing();
});
}
});
beforeEach(() => {
switch (mode) {
case 'none':
generateNone();
case 'single':
generateOne();
case 'multiple':
generateMany();
}
});
it('bar', () => {
expect(fixtures.length).toBeGreaterThan(-1);
});
const promiseValue = something => {
return something instanceof Promise ? something : Promise.resolve(something);
};
it('baz', async () => {
await expect(promiseValue()).resolves.toBe(1);
});
```