Simulieren Sie eine Verzögerung bei der Ausführung im Komponententest mit Moq

8

Ich versuche Folgendes zu testen:

%Vor%

mit folgendem Komponententest:

%Vor%

Message_HB1ToHB2 () gibt nur eine Zeichenkette zurück und die Methode "Delay Delivery" ist

%Vor%

Ich benutze Moq als Mock Framework und MSTest als Testframework. Wenn ich den Komponententest starte, bekomme ich folgende Ausgabe:

%Vor%

Abgesehen vom offensichtlichen "Code-Geruch", der das Thread.Sleep in den obigen Methoden verwendet, ist das Ergebnis des Komponententests nicht das, was ich erreichen möchte.

Kann irgendjemand einen besseren / präziseren Weg vorschlagen, das Moq-Framework zu verwenden, um eine Verzögerung der "Zustellung" der Nachricht zu simulieren. Ich habe etwas vom "Kleber" -Code weggelassen und nur die relevanten Teile eingeschlossen. Lassen Sie mich wissen, wenn etwas, das ich weggelassen habe, Sie davon abhält, die Frage zu verstehen.

    
Julian Easterling 04.04.2013, 20:09
quelle

3 Antworten

27

Wenn du möchtest, dass ein Moq-Mock nur eine Weile sitzt und nichts tut, kannst du einen Callback verwenden:

%Vor%

Ich habe das in LinqPad versucht und wenn Sie Thread.Sleep() anpassen, variiert die Ausführungszeit entsprechend.

    
Adam Rodger 05.04.2013, 10:20
quelle
6

Wenn Sie Ihren Mock einrichten, können Sie dem Thread sagen, dass er in der Return-Funktion schlafen soll:

%Vor%     
Susanne Peng 11.10.2016 03:06
quelle
0

Ich konnte die Moq-Version nicht zum Laufen bringen, also habe ich so etwas gemacht:

ein kleines Beispiel mit WaitHandle:

%Vor%     
serup 03.06.2016 16:35
quelle

Tags und Links