Skip to content

TypeScript · testing

test-loops-over-literal-cases

eslint:test-loops-over-literal-cases

Disallow assertions over an inline literal case loop in a test; parameterization reports and names every case independently.

Default
error
Fix
none
Languages
typescript

Why

A loop is reported as one test, so failures hide the individual case name and may stop later cases from running.

Fix

Create one named parameterized test or runner-aware subtest for each literal case.

Before / after

Executed by this rule’s unit tests.

Before

Do not hide cases in a loop

src/parser.test.ts · focus
test('parses', () => { for (const value of ['a', 'b']) { expect(parse(value)).toBe(value); } });

After

Use a parameterized test

src/parser.test.ts · focus
test.each(['a', 'b'])('parses %s', (value) => { expect(parse(value)).toBe(value); });

Limits

  • Only inline literal for-of cases containing framework assertions are reported.

Files

**/*.test.***/*.spec.***/tests/**

Message IDs

literalCaseLoop