Moq Async-Callback schlägt mit mehreren Parametern fehl

9

Ich versuche zu trainieren, wenn es etwas ist, was ich falsch mache, oder es ist ein Problem in moq oder NUnit. Ich rufe einen SOAP-Endpunkt an und meine Dienstreferenz generiert sowohl synchrone als auch asynchrone Methoden. Der Anruf, den ich mache, sieht ungefähr so ​​aus:

%Vor%

Ich richte meinen Moq ein, um den Rückruf zurückzugeben, damit ich die Parameter, mit denen ich den Webservice angerufen habe, einbinden kann. Mein Test sieht ungefähr so ​​aus:

%Vor%

An diesem Punkt erhalte ich eine Null-Referenz-Ausnahme, wenn ich meine Methode aufruft, die keine Informationen in der Stapel-Ablaufverfolgung enthält. Alles, was ich habe, ist Exception thrown: 'System.AggregateException' in mscorlib.dll in der Ausgabe.

Das seltsame Bit ist, dass es nicht fehlschlägt, wenn ich den Rückruf von der synchronen Methode aus anstelle und meine Methode ändere, um das aufzurufen.

Es schlägt auch nicht fehl, wenn ich eine asynchrone Methode aufruft, die nur einen Parameter hat.

Wenn jemand Ideen hat, lassen Sie es mich bitte wissen, da ich meine Methode wegen unserer Tests nicht ändern möchte, aber idealerweise möchte ich, dass mein Test sicherstellt, dass ich den Web-Service korrekt anrufe.

    
Tom 22.02.2016, 16:34
quelle

1 Antwort

21

Sie machen sich über ws.DoSomethingAsync() lustig, stellen aber nichts ein, um etwas zurückzugeben. Die DoThisAsync() -Methode wird fehlschlagen, weil sie versuchen wird, auf null zu warten. Sie können dies beheben, indem Sie Ihren Einrichtungscode in

ändern %Vor%

Wenn Sie .NET 4.6 oder höher verwenden, können Sie Task.FromResult(0) durch Task.CompletedTask ersetzen.

    
Matt Cole 23.02.2016, 21:12
quelle

Tags und Links