jeśli wyślę żądanie i spodziewam się, że odpowiedź dotrze do SignalR, czy możliwe jest przetestowanie tego przy użyciu testu LoadTest lub PerformanceTest w Visual Studio?WebTest dla SignalR możliwe?
Odpowiedz
Najlepszym sposobem na załadowanie testu aplikacji SignalR jest wbudowanie w urządzenie źródła crank project.
To proste rozwiązanie typu "ramp-up" stworzone z klientem .Net, ale stosunkowo łatwo jest go zmodyfikować, aby wywoływać dowolne wymagane metody koncentratora i analizować odpowiedzi.
Zawsze można dołączyć profiler programu Visual Studio do instancji iis express, aby uzyskać szczegółowe dane profilowania, jeśli jest to wymagane.
Krótka odpowiedź: Tak
Zrobiłem to kilka razy w CodedWebTests ale byłoby również możliwe do zrobienia w deklaratywnej WebTest. Możesz użyć niestandardowego modułu obsługi zdarzeń PreWebTest, aby utworzyć swojego klienta signalR i połączyć się z koncentratorem SignalR. To, co zdecydujesz się zrobić z powiadomieniem signalR, zależy od ciebie, ale chciałbym zapisać go w WebTestContext, a także wyświetlić go na ekranie wyników testu przy użyciu metody AddCommentToResult.
Poniższa metoda tworzy połączenie hubConnection w funkcji "addToGroup" w hoście, a następnie informuje klienta, co ma zrobić po otrzymaniu wiadomości.
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);
});
}
}
Użyj go, dołączając moduł obsługi zdarzeń do konstruktora testowego.
public MyWebTest()
{
PreWebTest += new SignalRPlugin().PreWebTest;
}
Po uzyskaniu wiadomości signalR można użyć niestandardowej reguły sprawdzania poprawności, aby potwierdzić, że odpowiedź została odebrana. Wystarczy pętla sprawdzająca WebTestContext dla klucza "signalRMessages". Zdecydowanie sugeruję, aby dodać funkcję limitu czasu, aby nie czekać na zawsze, jeśli wiadomości nigdy nie pojawią się.
Inną opcją, jeśli piszesz CodedWebTests, jest stworzenie metody WaitForNotifications, która w zasadzie robi to samo co sprawdzanie poprawności reguła. Zaletą tego jest to, że można użyć reguły wyodrębniania, aby pobrać dane z ostatniej odpowiedzi, a następnie użyć tych danych podczas sprawdzania poprawności wiadomości signalR. Jeśli nadal musisz zakończyć test w swojej metodzie WaitForNotification, użyj WebTest.InternalSetOutcome (Outcome.Fail);
- 1. Generowanie plików .webtest bez użycia Visual Studio
- 2. implement signalR bez jquery
- 3. signalR:/signalr/hubs nie jest generowany
- 4. Jakieś próbki dla mvc6 z signalr?
- 5. Używanie SignalR jako warstwy usługi dla WebRTC
- 6. Używanie ServiceStack.Text jako JSON Serializer dla SignalR
- 7. Rejestrowanie wyjątków SignalR?
- 8. Require.js + SignalR
- 9. SignalR i HTTPS
- 10. SignalR MethodAccessException
- 11. SignalR Security
- 12. SignalR - Ustaw ClientID ręcznie
- 13. Domyślny awaryjny klient SignalR
- 14. SignalR i AspNetHost.DependencyResolver
- 15. Zabezpieczanie połączeń SignalR
- 16. Gwarantowana dostawa w SignalR
- 17. Uruchom komendę zarządzania Python/Django z UnitTest/WebTest
- 18. xpath 2.0 dla java możliwe
- 19. Rozłączenie klienta SignalR .NET
- 20. Przeciążenie SignalR Hub
- 21. SignalR - Wyślij wiadomość OnConnected
- 22. SignalR demo nie działa
- 23. SignalR i urządzenia mobilne
- 24. SignalR z vNext
- 25. SignalR i równoważenie obciążenia
- 26. SignalR: $ .connection jest niezdefiniowane
- 27. SignalR dysponowania HubConnection
- 28. Usługa WCF z SignalR
- 29. SignalR $ .connection is undefined
- 30. Odpowiedzi SignalR nadpisujące nagłówki