StreamMatcher class abstract

A matcher that matches events from Streams or StreamQueues.

Stream matchers are designed to make it straightforward to create complex expectations for streams, and to interleave expectations with the rest of a test. They can be used on a Stream to match all events it emits:

expect(stream, emitsInOrder([
  // Values match individual events.

  // Matchers also run against individual events.
  startsWith("Loading took"),

  // Stream matchers can be nested. This asserts that one of two events are
  // emitted after the "Loading took" line.
  emitsAnyOf(["Succeeded!", "Failed!"]),

  // By default, more events are allowed after the matcher finishes
  // matching. This asserts instead that the stream emits a done event and
  // nothing else.

It can also match a StreamQueue, in which case it consumes the matched events. The call to expect returns a Future that completes when the matcher is done matching. You can await this to consume different events at different times:

var stdout = StreamQueue(stdoutLineStream);

// Ignore lines from the process until it's about to emit the URL.
await expectLater(stdout, emitsThrough('WebSocket URL:'));

// Parse the next line as a URL.
var url = Uri.parse(await;
expect(, equals('localhost'));

// You can match against the same StreamQueue multiple times.
await expectLater(stdout, emits('Waiting for connection...'));

Users can call StreamMatcher to create custom matchers.



StreamMatcher(Future<String?> matchQueue(StreamQueue), String description)
Creates a new StreamMatcher described by description that matches events with matchQueue.


description String
The description of this matcher.
hashCode int
The hash code for this object.
runtimeType Type
A representation of the runtime type of the object.


describe(Description description) Description
Builds a textual description of the matcher.
describeMismatch(dynamic item, Description mismatchDescription, Map matchState, bool verbose) Description
Builds a textual description of a specific mismatch.
matches(dynamic item, Map matchState) bool
Does the matching of the actual vs expected values.
matchQueue(StreamQueue queue) Future<String?>
Tries to match events emitted by queue.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
toString() String
A string representation of this object.


operator ==(Object other) bool
The equality operator.