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.
  "Ready.",

  // 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.
  emitsDone
]));

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 stdout.next);
expect(url.host, 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.

Inheritance

Constructors

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

Properties

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

Methods

describe(Description description) Description
Builds a textual description of the matcher.
inherited
describeMismatch(dynamic item, Description mismatchDescription, Map matchState, bool verbose) Description
Builds a textual description of a specific mismatch.
inherited
matches(dynamic item, Map matchState) bool
Does the matching of the actual vs expected values.
inherited
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.
inherited
toString() String
A string representation of this object.
inherited

Operators

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