avoid-misused-test-matchers
preset: recommended
Warns when an incorrect matcher or literal is used to verify the target expression.
info
This rule supports only matchers provided by the test
package.
List of supported matchers
- isNot
- allOf
- anyOf
- isEmpty
- isNotEmpty
- isNull
- isNotNull
- isTrue
- isFalse
- returnsNormally
- prints
- isMap
- isList
- hasLength
- contains
- isIn
- equals
- everyElement
- anyElement
- orderedEquals
- unorderedEquals
- unorderedMatches
- pairwiseCompare
- containsAll
- containsAllInOrder
- containsOnce
- containsValue
- containsPair
- closeTo
- inInclusiveRange
- inExclusiveRange
- inOpenClosedRange
- inClosedOpenRange
- isZero
- isNonZero
- isPositive
- isNonPositive
- isNegative
- isNonNegative
- greaterThan
- greaterThanOrEqualTo
- lessThan
- lessThanOrEqualTo
- equalsIgnoringCase
- equalsIgnoringWhitespace
- startsWith
- endsWith
- stringContainsInOrder
- matches
- isA
- completes
- doesNotComplete
- emitsDone
- emits
- emitsError
- mayEmit
- emitsAnyOf
- emitsInOrder
- emitsThrough
- mayEmitMultiple
- neverEmits
- emitsInAnyOrder
- throwsA
- throwsException
- throwsStateError
- throwsUnimplementedError
Example
❌ Bad:
const _someNumber = 1;
const _someString = '1';
const _someList = [1, 2, 3];
void fn() {
expect(_someString, isList); // LINT
expect({1}, isList); // LINT
expect(_someNumber, isEmpty); // LINT
expect(_someNumber, isNull); // LINT
expect(_someNumber, isNotNull); // LINT
expect(_someNumber, hasLength(1)); // LINT
expect(_someString, equals(<int>[])); // LINT
expect(_someString, allOf(isZero, isA<num>())); // LINT
}
✅ Good:
const _someNumber = 1;
const _someString = '1';
const _someList = [1, 2, 3];
void fn() {
expect(_someString, isA<String>);
expect(_someList, isList);
expect(_someNumber, isZero);
expect(_someList, hasLength(1));
expect(_someList, contains(1));
}