【发布时间】:2019-10-18 15:04:34
【问题描述】:
我使用 Mockito 在 Flutter 上编写测试。我有一个模拟类和方法,其参数是函数 - Function(),此方法返回 StreamSubscription。我需要将这些参数传递给listen() 函数的调用,但找不到方法。 (见示例)
有人可以帮帮我吗?
我尝试像示例中一样使用 argThat(anyNamed('nameOfArgument') 传递它们,但测试会引发错误 - “anyNamed”参数匹配器在方法存根之外使用(通过 when)
class MockPhotoLibraryService extends Mock implements PhotoLibraryService {}
PhotoLibraryService setupMockPhotoLibraryService() {
final photoLibraryService = MockPhotoLibraryService();
when(
photoLibraryService.getPhotosForPeriod(
onData: anyNamed('onData'),
onDone: anyNamed('onDone'),
onError: anyNamed('onError')),
).thenAnswer((_) => Stream<Photo>.fromFuture(
Future<Photo>.delayed(Duration(milliseconds: 50), () => Photo()))
.listen(argThat(anyNamed('onData')), //need to pass argument named onData
onDone: argThat(anyNamed('onDone')), //need to pass argument named onDone
onError: argThat(anyNamed('onError')), //need to pass argument named onError
cancelOnError: true));
return photoLibraryService;
}
我需要 Future 调用这些参数函数,以使我的可测试小部件正常工作。
【问题讨论】: