簡體   English   中英

如何模擬 Dart 中的 File 實例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM