Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart&;莫基托。如何在模拟方法中调用Function()参数_Dart_Mockito - Fatal编程技术网

Dart&;莫基托。如何在模拟方法中调用Function()参数

Dart&;莫基托。如何在模拟方法中调用Function()参数,dart,mockito,Dart,Mockito,我使用Mockito编写关于颤振的测试。我有一个模拟类和方法,其参数为functions-Function(),该方法返回StreamSubscription。我需要将这些参数传递给调用listen()函数,但找不到方法。(见示例) 谁能帮帮我吗 我试图用argThat(anyNamed('nameOfArgument')传递它们,就像在示例中一样,但是测试trows错误-在方法存根之外使用“anyNamed”参数匹配器(当时通过) 类MockPhotoLibraryService扩展Mock实

我使用Mockito编写关于颤振的测试。我有一个模拟类和方法,其参数为functions-Function(),该方法返回
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);
});