Dart&;莫基托。如何在模拟方法中调用Function()参数
我使用Mockito编写关于颤振的测试。我有一个模拟类和方法,其参数为functions-Function(),该方法返回Dart&;莫基托。如何在模拟方法中调用Function()参数,dart,mockito,Dart,Mockito,我使用Mockito编写关于颤振的测试。我有一个模拟类和方法,其参数为functions-Function(),该方法返回StreamSubscription。我需要将这些参数传递给调用listen()函数,但找不到方法。(见示例) 谁能帮帮我吗 我试图用argThat(anyNamed('nameOfArgument')传递它们,就像在示例中一样,但是测试trows错误-在方法存根之外使用“anyNamed”参数匹配器(当时通过) 类MockPhotoLibraryService扩展Mock实
StreamSubscription
。我需要将这些参数传递给调用listen()
函数,但找不到方法。(见示例)
谁能帮帮我吗
我试图用argThat(anyNamed('nameOfArgument')
传递它们,就像在示例中一样,但是测试trows错误-在方法存根之外使用“anyNamed”参数匹配器(当时通过)
类MockPhotoLibraryService扩展Mock实现PhotoLibraryService{}
PhotoLibraryService设置MockPhotoLibraryService(){
最终photoLibraryService=MockPhotoLibraryService();
什么时候(
photoLibraryService.getPhotosForPeriod(
onData:anyNamed('onData'),
onDone:anyNamed('onDone'),
onError:anyNamed('onError')),
).thenAnswer(()=>Stream.fromFuture(
Future.delayed(持续时间(毫秒:50),()=>Photo())
.listen(argThat(anyNamed('onData')),//需要传递名为onData的参数
onDone:argThat(anyNamed('onDone'),//需要传递名为onDone的参数
onError:argThat(anyNamed('onError'),//需要传递名为onError的参数
取消者错误:true);
返回照片库服务;
}
我需要这些参数函数被未来调用,以便我的可测试小部件能够正常工作。您可以通过调用对象访问原始调用参数。它作为参数传递给然后应答回调函数
when(photoLibraryService.getPhotosForPeriod(
onData: anyNamed('onData'),
onDone: anyNamed('onDone'),
onError: anyNamed('onError'),
)).thenAnswer((Invocation invocation) {
final namedArgs = invocation.namedArguments;
final onData = namedArgs[Symbol('onData')] as Function(Photo);
final onDone = namedArgs[Symbol('onDone')] as Function();
final onError = namedArgs[Symbol('onError')] as Function(dynamic);
return Stream<Photo>.fromFuture(
Future<Photo>.delayed(Duration(milliseconds: 50), () => Photo()),
).listen(onData, onDone: onDone, onError: onError, cancelOnError: true);
});
when(photoLibraryService.getPhotosForPeriod)(
onData:anyNamed('onData'),
onDone:anyNamed('onDone'),
onError:anyNamed('onError'),
)).thenAnswer((调用调用){
final namedArgs=invocation.namedArguments;
最终onData=作为功能的命名符号[Symbol('onData')](照片);
final onDone=namedArgs[Symbol('onDone')]作为函数();
最终onError=namedArgs[符号('onError')]作为功能(动态);
返回流.fromFuture(
Future.delayed(持续时间(毫秒:50),()=>Photo()),
).听(onData,onDone:onDone,onError:onError,cancelOnError:true);
});
when(photoLibraryService.getPhotosForPeriod(
onData: anyNamed('onData'),
onDone: anyNamed('onDone'),
onError: anyNamed('onError'),
)).thenAnswer((Invocation invocation) {
final namedArgs = invocation.namedArguments;
final onData = namedArgs[Symbol('onData')] as Function(Photo);
final onDone = namedArgs[Symbol('onDone')] as Function();
final onError = namedArgs[Symbol('onError')] as Function(dynamic);
return Stream<Photo>.fromFuture(
Future<Photo>.delayed(Duration(milliseconds: 50), () => Photo()),
).listen(onData, onDone: onDone, onError: onError, cancelOnError: true);
});