Moq Rückruf mit out-parameter
Ich versuche, Moq, zu verhöhnen, einen Rückruf für die folgende Methodensignatur:
ResponseHeader AddIncentives(
Hs_transRow[] data,
out ResponseBody responseBody);
Ich möchte, dass meine callback zu verwenden die Daten, die übergeben wird. Allerdings bin ich in Probleme laufen, die ich denke, sind da der zweite parameter ist ein out-parameter. Ich kann das setup und die Daten zurückgeben, ohne Probleme, aber der Rückruf ist ein Problem.
Dies ist mein Aktuelles setup:
var addIncentiveResponseBody = new ResponseBody();
mockCoinsService
.Setup(service => service.AddIncentives(It.IsAny<Hs_transRow[]>(), out addIncentiveResponseBody))
.Callback((Hs_transRow[] data, ResponseBody body) =>
{
//I want to use the data variable here
})
.Returns(() => new ResponseHeader
{
action = ResponseHeaderAction.RESPONSE,
});
Wenn ich diesen code auszuführen, der als Teil einer unit-Tests, erhalte ich die Fehlermeldung:
Ungültig Rückruf. Setup-Methode auf mit den Parametern (Hs_transRow[],ResponseBody&) nicht aufrufen callback mit Parametern (Hs_transRow[],ResponseBody).
Kann ich sehen, es ist ein kaufmännisches und-Zeichen Unterschied, was ich davon ausgehen ist, da von diesem parameter sollte ein out-parameter. Allerdings, wenn ich das out-Schlüsselwort, um den Rückruf (und weisen Sie ihm einen Wert innerhalb der callback), bekomme ich die build-time-Fehler:
Delegaten "Action" nicht nehmen zwei Argumente.
Moq ist nicht in der Lage zu handhaben, ein callback für eine Methode, die einen out-parameter, oder mache ich etwas falsch?
[Edit] um Zu klären, ohne Zweifel, ich bin nicht zu Fragen, wie der Wert der out-parameter. Dies ist bereits getan, indem Sie die Zeile:
var addIncentiveResponseBody = new ResponseBody();
- Diese Frage über die Zuweisung des Wertes von einem out-parameter. Ich bin schon in der Lage, um den Wert festzulegen. Meine Frage ist über die Verwendung der input-parameter in einem callback, wenn es auch ein out-parameter. Die Relevanz der out-parameter ist nicht so, dass ich versuche es, aber es hindert mich daran, mithilfe der data-variable im callback.
- Hast du gelesen das Scott Wegner Antwort in dieser Frage?
- Vielen Dank für die Kennzeichnung, die Antwort, ich werde sehen, ob es funktioniert, in meiner situation, und aktualisieren Sie diese Frage mit mehr Details, wenn nicht.
- Um zu bestätigen, Scott Wegner Antwort funktioniert in diesem Szenario seine OutCallback überlastung hat den trick für mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser wurde darauf hingewiesen, in den Kommentaren von Jeroen Heier, sondern, indem es als Antwort sollte es besser sichtbar zu machen. Scott Wegner hat geschrieben OutCallback überlastung, die verwendet werden können.
Dieser wird wie folgt verwendet: