flutter - 如何在 Dart 中模拟 File 的实例
问题描述
我想模拟这个方法file.writeAsBytes
,但我不知道怎么做。
注意:我不打算保存测试中的文件,只是覆盖该方法以便我可以获得路径列表。
有没有人经历过这个?
我的代码是
class ShareHelper {
static Future<List<String>> createFilesFromString(
List<FileShare> files) async =>
Future.wait(
files.map((fileShare) => _createFileFromString(fileShare)).toList());
static Future<String> _createFileFromString(FileShare fileShare) async {
final str = fileShare.base64.split(',');
Uint8List bytes = base64.decode(str[1]);
String dir = (await getTemporaryDirectory()).path;
final fileName = _createFileName(fileShare.name);
File file = File(
"$dir/" + fileName);
await file.writeAsBytes(bytes);
return file.path;
}
}
我的单元测试:
test('Deve compartilhar os arquivos', () async {
PathProviderPlatform.instance = MockPathProviderPlatform();
final files = [
FileShare(name: 'Teste/A', base64: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...'),
];
final paths = await ShareHelper.createFilesFromString(files);
expect(paths, []);
});
});
解决方案
使用Mockito ` 模拟包,因此您可以轻松地模拟文件并使用假响应覆盖所需的方法。
class MockFile extends Mock implements File {
@override
Future<File> writeAsBytes(List<int> bytes, {FileMode mode = FileMode.write, bool flush = false}) {
// TODO: implement writeAsBytes
throw UnimplementedError();
}
}
推荐阅读
- python - 处理 Tweepy api 返回的 420 响应码
- c# - DotNet Core 控制台应用程序:应用程序依赖项清单中指定的程序集
- javascript - 尽量减少应用程序中表单的重复代码
- ios - 将 Xib 中的视图添加到透明视图中,为什么它显示得更暗?
- php - 使用 PHP 从 XML 中解析产品描述
- tomcat - Tomcat 迁移对 web.xml 和 struts-config.xml 的影响
- excel - 复杂的 IF 计数,Excel
- mysql - 存储 UUID 数组的 Rails、MySql、JSON 列 - 需要完全匹配
- java - 想在静态方法中调用非静态接口方法。如何?
- python - 不要针对子模型类