我创建了一个密封类,如下所示,并创建了扩展方法。
sealed class Result<S, E extends Exception> {
const Result();
}
final class Success<S, E extends Exception> extends Result<S, E> {
const Success({required this.value});
final S value;
}
final class Failure<S, E extends Exception> extends Result<S, E> {
const Failure({required this.exception});
final E exception;
}
extension ResultExtension on Result<dynamic, Exception> {
dynamic unwrap() {
if (this is Success) {
return (this as Success).value;
} else {
throw (this as Failure).exception;
}
}
}
字符串
因此,我创建了以下使用此类的方法。
String execute() {
try {
final result = fetchText(); // return Result<String, Exception>
return result.unwrap() as String;
} on Exception catch (_) {
rethrow;
}
}
型
我创建了这样的单元测试。
test('', () {
// Arrange
when(
fetchText(),
).thenAnswer((_) => const Success(value: 'Success'));
// Act
final result = execute();
// Assert
expect(result, 'Success');
});
型
并且,显示以下错误消息。
MissingDummyValueError: Result<String, Exception>
This means Mockito was not smart enough to generate a dummy value of type
'Result<String, Exception>'. Please consider using either 'provideDummy' or 'provideDummyBuilder'
functions to give Mockito a proper dummy value.
Please note that due to implementation details Mockito sometimes needs users
to provide dummy values for some types, even if they plan to explicitly stub
all the called methods.
型
我相信这是因为我还没有为unwrap()创建一个mock,但我不知道如何创建它。我如何为一个扩展密封类的方法创建一个mock?
1条答案
按热度按时间ztmd8pv51#
您需要手动提供它。将此添加到测试中。Mockito无法生成,但您可以手动添加一个虚拟示例:
字符串