[英]How mock a instance of File in Dart
我想模擬方法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 ` mocking package,這樣您就可以輕松地模擬文件並使用虛假響應覆蓋所需的方法。
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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.