0

私は現在、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()メソッドを単体テストでテストするにはどうすればよいですか?

どんな助けでも大歓迎です!

4

1 に答える 1