Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Upozornění
Tato dokumentace není určená pro nejnovější verzi služby SignalR. Podívejte se na ASP.NET Core SignalR.
Tento článek popisuje použití funkcí testování jednotek v signalR 2.
Verze softwaru použité v tomto tématu
- Visual Studio 2013
- .NET 4.5
- SignalR verze 2
Dotazy a komentáře
V komentářích v dolní části stránky nám napište, jak se vám tento kurz líbil a co bychom mohli zlepšit. Pokud máte dotazy, které nesouvisejí přímo s kurzem, můžete je publikovat na fóru ASP.NET SignalR nebo StackOverflow.com.
Testování jednotek aplikací SignalR
Funkce testování jednotek v SignalR 2 můžete použít k vytvoření testů jednotek pro vaši aplikaci SignalR. SignalR 2 obsahuje rozhraní IHubCallerConnectionContext , které se dá použít k vytvoření napodobeného objektu pro simulaci metod centra pro účely testování.
V této části přidáte testy jednotek pro aplikaci vytvořenou v Začínáme kurzu pomocí XUnit.net a Moq.
XUnit.net se použijí k řízení zkoušky; Moq se použije k vytvoření napodobení objektu pro testování. V případě potřeby lze použít jiné napodobované architektury; NSubstitute je také dobrou volbou. Tento kurz ukazuje, jak nastavit objekt napodobení dvěma způsoby: první pomocí objektu dynamic (zavedeného v rozhraní .NET Framework 4) a druhý pomocí rozhraní.
Obsah
Tento kurz obsahuje následující části.
Testování částí s dynamickým využitím
V této části přidáte test jednotek pro aplikaci vytvořenou v Začínáme kurzu pomocí dynamického objektu.
Nainstalujte rozšíření XUnit Runner pro Visual Studio 2013.
Dokončete kurz Začínáme nebo si stáhněte dokončenou aplikaci z Galerie kódů MSDN.
Pokud používáte staženou verzi aplikace Začínáme, otevřete konzolu Správce balíčků a kliknutím na Obnovit přidejte balíček SignalR do projektu.
Přidejte projekt do řešení pro test jednotek. Klikněte pravým tlačítkem na řešení v Průzkumník řešení a vyberte Přidat, Nový projekt.... V uzlu C# vyberte uzel Windows. Vyberte Knihovna tříd. Pojmenujte nový projekt TestLibrary a klikněte na OK.
Do projektu knihovny testů přidejte odkaz na projekt SignalRChat. Klikněte pravým tlačítkem na projekt TestLibrary a vyberte Přidat, Odkaz.... Vyberte uzel Projects (Projekty ) v uzlu Solution (Řešení ) a zaškrtněte SignalRChat. Klikněte na OK.
Přidejte balíčky SignalR, Moq a XUnit do projektu TestLibrary . V konzole Správce balíčků nastavte rozevírací seznam Výchozí projekt na TestLibrary. V okně konzoly spusťte následující příkazy:
Install-Package Microsoft.AspNet.SignalRInstall-Package MoqInstall-Package XUnit
Vytvořte testovací soubor. Klikněte pravým tlačítkem na projekt TestLibrary a klikněte na Přidat..., Třída. Pojmenujte novou třídu Tests.cs.
Obsah souboru Tests.cs nahraďte následujícím kódem.
using System; using Xunit; using SignalRChat; using Microsoft.AspNet.SignalR.Hubs; using Moq; using System.Dynamic; namespace TestLibrary { public class Tests { [Fact] public void HubsAreMockableViaDynamic() { bool sendCalled = false; var hub = new ChatHub(); var mockClients = new Mock<IHubCallerConnectionContext<dynamic>>(); hub.Clients = mockClients.Object; dynamic all = new ExpandoObject(); all.broadcastMessage = new Action<string, string>((name, message) => { sendCalled = true; }); mockClients.Setup(m => m.All).Returns((ExpandoObject)all); hub.Send("TestUser", "TestMessage"); Assert.True(sendCalled); } } }Ve výše uvedeném kódu se vytvoří testovací klient pomocí objektu
Mockz knihovny Moq typu IHubCallerConnectionContext (v SignalR 2.1 přiřaďtedynamicparametr typu). RozhraníIHubCallerConnectionContextje objekt proxy, pomocí kterého na klientovi vyvoláte metody. FunkcebroadcastMessageje pak definována pro napodobení klienta, aby ji bylo možné volatChatHubtřídou . Testovací modul pak volá metoduSendChatHubtřídy , která zase volá napodobenoubroadcastMessagefunkci.Sestavte řešení stisknutím klávesy F6.
Spusťte test jednotek. V sadě Visual Studio vyberte Test, Windows, Průzkumník testů. V okně Průzkumníka testů klikněte pravým tlačítkem na HubsAreMockableViaDynamic a vyberte Spustit vybrané testy.
Zkontrolujte dolní podokno v okně Průzkumníka testů a ověřte, že test proběhl úspěšně. V okně se zobrazí, že test proběhl úspěšně.
Testování jednotek podle typu
V této části přidáte test pro aplikaci vytvořenou v Začínáme kurzu pomocí rozhraní, které obsahuje testovanou metodu.
Proveďte kroky 1 až 7 v kurzu Testování jednotek s dynamickým kurzem .
Obsah souboru Tests.cs nahraďte následujícím kódem.
using Xunit; using SignalRChat; using Microsoft.AspNet.SignalR.Hubs; using Moq; namespace TestLibrary { public class Tests { public interface IClientContract { void broadcastMessage(string name, string message); } [Fact] public void HubsAreMockableViaType() { var hub = new ChatHub(); var mockClients = new Mock<IHubCallerConnectionContext<dynamic>>(); var all = new Mock<IClientContract>(); hub.Clients = mockClients.Object; all.Setup(m => m.broadcastMessage(It.IsAny<string>(), It.IsAny<string>())).Verifiable(); mockClients.Setup(m => m.All).Returns(all.Object); hub.Send("TestUser", "TestMessage"); all.VerifyAll(); } } }Ve výše uvedeném kódu se vytvoří rozhraní definující podpis
broadcastMessagemetody, pro kterou testovací modul vytvoří napodobeninu klienta. Potom se vytvoří napodobený klient pomocí objektuMocktypu IHubCallerConnectionContext (v SignalR 2.1 přiřaďtedynamicparametr typu). RozhraníIHubCallerConnectionContextje objekt proxy, pomocí kterého na klientovi vyvoláte metody.Test pak vytvoří instanci
ChatHuba pak vytvoří napodobenou verzibroadcastMessagemetody, která je vyvolána volánímSendmetody v centru .Sestavte řešení stisknutím klávesy F6.
Spusťte test jednotek. V sadě Visual Studio vyberte Test, Windows, Průzkumník testů. V okně Průzkumníka testů klikněte pravým tlačítkem na HubsAreMockableViaDynamic a vyberte Spustit vybrané testy.
Zkontrolujte dolní podokno v okně Průzkumníka testů a ověřte, že test proběhl úspěšně. V okně se zobrazí, že test proběhl úspěšně.