私は現在、Microsoft イベント ハブについて学習しており、こちらのサンプル コードに従いました。ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> events)
EventData を取得した後、それをデータベースに保存するようにメソッドを変更しました。今のところ、単体テストを使用してコードをテストしたいと考えています。テスト クラスでは、センダーを設定し、初期化メソッドでデータをイベント ハブに送信します。その部分は完全に機能します。次に、受信側をテストする新しいテスト メソッドを作成します。コードは次のようになります。
[TestMethod]
public void TestProcessEventsAsync()
{
//Initialize the receiver, and run it
Receiver receiver = new Receiver();
Receiver r = new Receiver(eventHubName, connectionString);
r.MessageProcessingWithPartitionDistribution();
//check if the data is stored in the database
...
}
ここでは、レシーバーの新しいインスタンスを作成し、それを使用してイベント ハブに送信されたデータを処理するだけです。イベント ハブに 3 つのオブジェクトのみを送信しましたが、そのうちの 2 つは同じパーティションを使用しています。テストが失敗し、すべてのパーティションが初期化されていないことが出力に示されます。これは、すべてのデータの処理が完了する前に受信側が停止したことを意味します。
MessageProcessingWithPartitionDistribution()
メソッドがタスクを複数のスレッドに分割したため、単体テストはこのようには機能しないと推測しています。私の質問は、このMessageProcessingWithPartitionDistribution()
メソッドを単体テストでテストするにはどうすればよいですか?
どんな助けでも大歓迎です!