2013-02-17 5 views
5

私はリクエストを送信し、その応答がSignalRで来ると予想していますが、これはVisual StudioでLoadTestまたはPerformanceTestを使用してテストできますか?WebTest for SignalRは可能ですか?

答えて

0

SignalRアプリケーションをロードする最も良い方法は、ソースに含まれているcrank projectをビルドすることです。

これは.Netクライアントで構築された単純なランプアップソリューションですが、必要なハブメソッドを呼び出して応答を分析するのは比較的簡単です。

必要に応じて詳細なプロファイリングデータを取得するために、Visual Studioプロファイラをiis expressインスタンスに添付することができます。

2

短い答え:はい

私はCodedWebTestsでこれを数回やったが、また、宣言WebTestの中で行うことが可能であろう。カスタムPreWebTestイベントハンドラを使用して、signalRクライアントを作成し、SignalRハブに接続することができます。 signalR通知で行うことはあなた次第ですが、私はWebTestContextに保存し、AddCommentToResultメソッドを使用してテスト結果画面に表示するのが好きです。

以下のメソッドは、hubConnectionを作成してハブに「addToGroup」関数を呼び出し、クライアントにメッセージを受け取ったときに何をするかを指示します。

using Microsoft.AspNet.SignalR.Client; 

public class SignalRPlugin : WebtTestPlugin 
{ 
    public override void PreWebTest(object sender, PreWebTestEventArgs e) 
    { 
     var hubConnection = new HubConnection("yourSignalRUrl"); 
     var hubProxy = hubConnection.CreateHubProxy("notifications"); 

     hubConnection.Start().Wait(); 
     hubProxy.Invoke("addToGroup", "me"); 

     hubProxy.On<string>("message", s => 
     { 
      e.Webtest.AddCommentToResult(s); 
      e.Webtest.Context.Add("signalRMessages", s); 
     }); 
    } 
} 

テストコンストラクタにイベントハンドラを添付して使用します。

public MyWebTest() 
{ 
    PreWebTest += new SignalRPlugin().PreWebTest; 
} 

次にsignalRメッセージを取得したら、カスタム検証ルールを使用して応答が受信されたことを検証できます。 「signalRMessages」キーのWebTestContextをwhileループでチェックするだけです。

CodedWebTestsを書く場合のもう1つの選択肢は、基本的に検証と同じことを行うWaitForNotificationsメソッドを作成することです。タイムアウト機能を追加することを強くお勧めします。ルール。この利点は、抽出ルールを使用して最後の応答からデータを取り出し、そのデータを使用してsignalRメッセージを検証できることです。 WaitForNotificationメソッドでテストに失敗する必要がある場合は、WebTest.InternalSetOutcome(Outcome.Fail)を使用します。

関連する問題