如果我有一个流发出Dog
对象的流。
Stream<Dog> dogStream;
class Dog {
final String name;
final String breed;
Dog(this.name, this.breed);
}
我要测试第4个值发出的名称。
因此,我想忽略stream
发出的前3个值,并检查第4个值是否等于foo
。如何检查特定位置?
PS:这样做有很多怪异的方法,例如使用expectInOrder
,但是我的测试不应该关心发出的前3个值,如果我要检查第8个值或说第20个值,则不会。使用expectInOrder
是没有道理的。
答案 0 :(得分:0)
您可以使用elementAt
或跳过流的前3个值并检查发射的项目:
test('stream', () async {
Stream<int> stream() => Stream.fromIterable([1, 2, 3, 4, 5]);
expect(await stream().elementAt(3), 4);
expect(stream().skip(3), emitsInOrder(<dynamic>[4]));
expect(stream().skip(3), emits(4));
});