web-dev-qa-db-ja.com

Google Cloud Storageエミュレーターはありますか?

テストの目的で、クラウドストレージをモックしたいと思います。テストが遅くなるからです。

Google Cloud Storageエミュレーターはありますか?

13

現時点では、Googleが提供する公式のエミュレーターはありません。

私は現在、開発中のGoogle Storageの動作をモックするためにプロジェクトMinio( https://www.minio.io/ )を使用しています(Minioはファイルシステムをストレージバックエンドとして使用し、S3apiV2との互換性を提供します。 Google Storageと互換性があります)。

6
Caio Tomazelli

Googleには メモリ内エミュレータ 使用できます(コア関数の大部分が実装されています)。

テストクラスパスに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)
    );
  }
13
ThomasMH