2016-12-10 3 views
1

Parameter akzeptiert I Moq bin mit und möchte eine Methode verspotten, die "out" Parameter akzeptiert:Wie moq zu mock-Methode zu verwenden, die

protected void GetDataRow(string id, out DataRow dataRow) 

Das ist, was ich versucht:

dataMock.Protected().Setup("GetDataRow", ItExpr.IsAny<string>(), ItExpr.IsAny<DataRow>()); 

aber es gibt:

System.ArgumentException : Member DataManager.GetDataRow does not exist. 

Wenn ich den datarow Parameter nicht "out" zu ändern, funktioniert alles wie erwartet.

Wie soll ich in diesem Fall einen Schein erstellen?

+1

Helfen die Dokumente nicht? https://github.com/Moq/moq4/wiki/Quickstart – DavidG

+0

Dies sollte Moq Dokumentation hier in SO –

Antwort

2

Sie können IsAny<DataRow> nicht mit out-Parameter verwenden. Anstatt IsAny<DataRow> können Sie lokale DataRow Variable erstellen und diese an den Schein übergeben. Der Aufruf des Mocks wird später dataRow zurückgeben, so dass Sie diesen verwenden können, um Ihre Testerwartungen zu optimieren.

DataRow dataRow = new DataRow(); 
dataMock.Protected().Setup("GetDataRow", ItExpr.IsAny<string>(), out dataRow); 
+0

hinzugefügt werden Vielen Dank, aber dies scheint nicht zu funktionieren, ich bekomme: Fehler CS1615: Argument 3 kann nicht mit dem Schlüsselwort 'out' übergeben werden – Bart

Verwandte Themen