25

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

有谷歌云存储模拟器吗?

4

2 回答 2

33

谷歌有一个你可以使用的内存模拟器(实现了大部分核心功能)。

您需要com.google.cloud:google-cloud-nio在您的测试类路径上(:0.25.0-alpha当前)。然后您可以使用/注入Storage由内存中LocalStorageHelper测试助手服务实现的接口。

示例用法:

  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)
    );
  }
于 2017-10-11T15:20:42.560 回答
14

谷歌暂时没有提供官方的模拟器。

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

于 2016-08-03T17:14:49.187 回答