ネイティブコネクタのテスト

コネクタのネイティブ SDK では、次の3つの異なるレベルでテストが使用されます。

  • ユニットテスト

  • 統合テスト

  • アプリケーションテスト

これらのユニットテストは、他のアプリケーションのユニットテストと変わりません。システムの一部は、返された値を簡単に操作できるようにモックアップされています。 connectors-native-sdk-test ライブラリは、 SDK にバンドルされているライブラリとして、Snowflakeとの通信を担当するいくつかのクラスの有用な InMemory モックアップを提供します。これにより、開発者はSnowflake接続を使用することなく、ローカル環境でユニットテストを記述し、実行できます。

統合テストにはSnowflakeへの接続が必要で、Snowflakeオブジェクトに対してクエリを実行します。ただし、これらの種類のテストでは、使用されるデータベースオブジェクトはスタンドアロンです。Snowflakeの機能の中には、Native Appsのコンテキストで利用できないものがあることに注意してください。

アプリケーションテストは、Snowflakeにデプロイされたネイティブアプリ上で実行されるテストです。この種のテストは非常に時間がかかり、コストもかかる可能性があるため、この方法では一部の主要なシナリオのみをテストすることをお勧めします。

全体として、ユニットテストを使用してできるだけ多くのケースをテストし、最も重要なパスへの統合テストとアプリケーションテストの数を最小限に抑えることが推奨されます。

ライブラリのテスト

前述の通り、Native SDK には connectors-native-sdk-test ライブラリがあり、テストに役立つ様々な機能を提供しています。主な機能は次のとおりです。

  • カスタムアサーション

  • インメモリ実装

  • テストビルダー

アサーション

ライブラリで提供されるアサーションは、 AssertJ fluent assertions に基づいています。提供されるすべてのアサーションは、 NativeSdkAssertions クラス内に実装されたファブリケーションメソッドを持っています。さらに、このクラスはオリジナルの AssertJ ファブリケーションメソッドをすべて継承しているため、カスタムアサーションとベースアサーションの両方を使用するには、1つつのインポートのみが必要です。

提供されるアサーションのリスト:

  • TestConfigAssert

  • IngestionProcessAssert

  • IngestionRunAssert

  • ConnectorResponseAssert

  • FullConnectorStatusAssert

  • ResourceIngestionDefinitionAssert

  • ResponseMapAssert

  • TestStateAssert

  • TaskAssert

  • TaskPropertiesAssert

  • VariantAssert

モックアップ

ライブラリ内部で使用されているモックアップは、データベーステーブル内に格納されているデータをモックアップするために、インメモリマップを使用しています。以下の例のように使用できます。

var customResourceRepository = new InMemoryDefaultResourceIngestionDefinitionRepository();
var key = "test_key";

var resource = createResource(key);
customResourceRepository.save(resource);

var result = customResourceRepository.fetch(key);
Copy
var table = new InMemoryDefaultKeyValueTable();
var repository = new DefaultConfigurationRepository(table);
var connectorService = new DefaultConnectorConfigurationService(repository);
Copy

提供されたメモリ内のオブジェクトのリスト:

  • InMemoryResourceIngestionDefinitionRepository

  • InMemoryIngestionProcessRepository

  • InMemoryAppendOnlyKeyValueTable

  • InMemoryDefaultKeyValueTable

  • InMemoryReadOnlyKeyValueTable

  • InMemoryConnectorErrorHelper

  • InMemoryTaskRef

  • InMemoryTaskRepository

提供されたメモリ内のタスクリアクタオブジェクトのリスト:

  • InMemoryCommandsQueueRepository

  • InMemoryConfigRepository

  • InMemoryWorkSelector

  • InMemoryExpiredWorkSelector

  • InMemoryWorkItemQueue

  • InMemoryInstanceRegistryRepository

  • InMemoryWorkerQueue

  • InMemoryWorkerQueueManager

  • InMemoryWorkerRegistry

  • InMemoryWorkerStatusRepository

  • InMemoryWorkerCombinedView

  • InMemoryConfiguredTaskReactorExistenceVerifier

  • InMemoryNotConfiguredTaskReactorExistenceVerifier

  • InMemoryTaskReactorInstanceComponentProvider

テストビルダー

テストビルダーは、 SDK コンポーネントをカスタマイズするときに使われる Builders に似たヘルパーオブジェクトです。ただし、上書きする内部サービスはすべて公開されています。 Builders の使用に関する詳細については、カスタマイズのドキュメントを確認してください。

new ConfigureConnectorHandlerTestBuilder()
                .withErrorHelper(mock(ConnectorErrorHelper.class))
                .withInputValidator(mock(ConfigureConnectorInputValidator.class))
                .withCallback(mock(ConfigureConnectorCallback.class))
                .withConfigurationService(mock(ConnectorConfigurationService.class))
                .withStatusService(mock(ConnectorStatusService.class))
                .build();
Copy