Wie kann ich eine Methode moqen, deren Signatur ein optionales Argument enthält, ohne es explizit anzugeben oder eine Üb

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie kann ich eine Methode moqen, deren Signatur ein optionales Argument enthält, ohne es explizit anzugeben oder eine Üb

by Anonymous » 29 Dec 2024, 07:10

Angesichts der folgenden Schnittstelle:

Code: Select all

public interface IFoo
{
bool Foo(string a, bool b = false);
}
Versuch, es mit Moq zu verspotten:

Code: Select all

var mock = new Mock();
mock.Setup(mock => mock.Foo(It.IsAny())).Returns(false);
gibt zur Kompilierungszeit den folgenden Fehler aus:


Ein Ausdrucksbaum möglicherweise nicht einen Aufruf oder Aufruf enthalten, der optionale Argumente verwendet


Ich habe festgestellt, dass das oben angesprochene Problem als Erweiterung in der Liste der Probleme von Moq angesprochen wurde scheint der Version 4.5 zugeordnet zu sein (wann immer das der Fall ist).

Meine Frage ist: Was soll ich tun, da das oben genannte Problem in absehbarer Zeit nicht behoben werden kann? Habe ich nur die Möglichkeit, den Standardwert des optionalen Parameters jedes Mal explizit festzulegen, wenn ich ihn verspotte (was den Sinn der Angabe eines Parameters irgendwie zunichte macht) oder eine Überladung ohne Bool zu erstellen (wie ich es getan hätte). vor C# 4)?

Oder hat jemand eine cleverere Möglichkeit gefunden, dieses Problem zu lösen?

Top