【发布时间】:2021-04-26 01:32:59
【问题描述】:
我想模拟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, []);
});
});
【问题讨论】:
-
我强烈建议不要直接使用
dart:io中的File,而是使用package:file。这将允许您在测试中使用MemoryFileSystem。
标签: flutter unit-testing dart mockito