有Google云存储模拟器吗?

Is there Google Cloud Storage emulator?

出于测试目的,我想模拟云存储,因为它会减慢测试速度。

有Google云存储模拟器吗?

Google暂时没有提供官方模拟器

我目前正在使用项目 Minio (https://www.minio.io/) 来模拟 Google 存储在开发中的行为(Minio 使用文件系统作为存储后端并提供与 S3 apiV2 的兼容性,它与 Google存储)。

Google 有一个 in-memory emulator 可以使用(大部分核心功能已实现)。

您的测试类路径中需要 com.google.cloud:google-cloud-nio(当前为 :0.25.0-alpha)。然后你可以 use/inject Storage 内存中 LocalStorageHelper test-helper 服务实现的接口。

用法示例:

  import com.google.cloud.storage.Storage;
  import com.google.cloud.storage.contrib.nio.testing.LocalStorageHelper;

  @Test
  public void exampleInMemoryGoogleStorageTest() {
    Storage storage = LocalStorageHelper.getOptions().getService();

    final String blobPath = "test/path/foo.txt";
    final String testBucketName = "test-bucket";
    BlobInfo blobInfo = BlobInfo.newBuilder(
        BlobId.of(testBucketName, blobPath)
    ).build();

    storage.create(blobInfo, "randomContent".getBytes(StandardCharsets.UTF_8));
    Iterable<Blob> allBlobsIter = storage.list(testBucketName).getValues();
    // expect to find the blob we saved when iterating over bucket blobs
    assertTrue(
        StreamSupport.stream(allBlobsIter.spliterator(), false)
            .map(BlobInfo::getName)
            .anyMatch(blobPath::equals)
    );
  }