hasClasses function Matchers
Matcher
hasClasses(
- dynamic classes
Allows you to check whether an Element has certain classes
within its HTML class
attribute.
classes
can be a String of space-separated CSS classes, or an Iterable of String CSS classes.
Similar to jest-dom's toHaveClass
matcher.
However, instead of the JS .not.toHaveClass()
pattern, you should use excludesClasses, and instead of
using the {exact: true}
option as you do in JS, you should use hasExactClasses.
Examples
<button class="btn extra btn-danger">Delete</button>
import 'package:react/react.dart' as react;
import 'package:react_testing_library/matchers.dart' show hasClasses;
import 'package:react_testing_library/react_testing_library.dart' as rtl;
import 'package:test/test.dart';
main() {
test('', () {
// Render the DOM shown in the example snippet above
final view = rtl.render(
react.button({'className': 'btn extra btn-danger'},
'Delete',
),
);
// Use react_testing_library queries to store references to the node(s)
final deleteButton = view.getByRole('button', name: 'Delete');
// Use the `hasClasses` matcher as the second argument of `expect()`
expect(deleteButton, hasClasses('extra'));
expect(deleteButton, hasClasses('btn-danger btn'));
expect(deleteButton, hasClasses(['btn-danger', 'btn']));
});
}
NOTE:
render()
supports React vDom elements / custom components created using either the
react or over_react packages.
The examples shown here use the
react
package since thereact_testing_library
does not have a direct dependency onover_react
- but both libraries are fully supported.
Implementation
Matcher hasClasses(dynamic classes) => _ElementClassNameMatcher(_ClassNameMatcher.expected(classes));