die folgende Schnittstelle Gegeben:Wie moq ich Moq eine Methode, die ein optionales Argument in seiner Signatur hat, ohne es explizit anzugeben oder eine Überladung zu verwenden?
public interface IFoo
{
bool Foo(string a, bool b = false);
}
Der Versuch, sie zu verspotten Moq mit:
var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);
bei der Kompilierung die folgende Fehlermeldung erhalten:
Ein Ausdruck Baum keinen Anruf enthalten oder Aufruf mit optionalen Argumenten
Ich habe festgestellt, das Problem oben als enhancement in Moq Liste der Probleme ausgelöst und es scheint, die 4.5-Version zugeordnet werden (wann immer das ist).
Meine Frage ist: Was soll ich tun, wenn das oben genannte nicht in nächster Zeit behoben wird? Sind meine Optionen nur, um entweder den Standardwert des optionalen Parameters jedes Mal explizit zu setzen, wenn ich ihn verspotte (was den Punkt, an dem man einen spezifiziert, vereitelt) oder eine Überladung ohne Bool zu erzeugen (wie ich es getan hätte) vor C# 4)?
Oder hat jemand einen schlaueren Weg gefunden, dieses Problem zu lösen?
Wäre es sinnvoll sein, nur It.IsAny() für den zweiten Parameter angeben? –
Eineinhalb Jahre später ist das immer noch wahr. – Mukus