在Dart的mockito库中,argThat和captureThat都是用于在mock对象的方法调用中捕获参数的匹配器。它们的区别在于如何使用和返回捕获的参数。
argThat匹配器:
使用argThat匹配器可以在方法调用中指定参数的某些条件。它接受一个函数作为参数,该函数接受一个参数并返回一个布尔值。
如果传递给方法的参数满足函数中指定的条件,那么argThat匹配器将返回true,表示参数匹配成功。
示例代码:
import 'package:mockito/mockito.dart';
class MockClass extends Mock implements SomeClass {}
void main() {
var mock = MockClass();
when(mock.method(argThat((arg) => arg > 5))).thenReturn('Mocked Value');
print(mock.method(10)); // 输出:Mocked Value
print(mock.method(3)); // 输出:null
}
captureThat匹配器:
使用captureThat匹配器可以捕获方法调用中的参数,并将其保存到一个列表中。这对于需要在后续的断言中检查参数值非常有用。
示例代码:
import 'package:mockito/mockito.dart';
class MockClass extends Mock implements SomeClass {}
void main() {
var mock = MockClass();
var capturedArgs = List();
mock.method(captureThat(capturedArgs.add));
print(capturedArgs); // 输出:[参数值]
}
总结: