ネイティブコネクタのテスト¶
コネクタのネイティブ 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);
var table = new InMemoryDefaultKeyValueTable();
var repository = new DefaultConfigurationRepository(table);
var connectorService = new DefaultConnectorConfigurationService(repository);
提供されたメモリ内のオブジェクトのリスト:
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();