Data la seguente interfaccia:Come si esegue il Moq di un metodo con un argomento facoltativo nella sua firma senza specificarlo esplicitamente o utilizzando un sovraccarico?
public interface IFoo
{
bool Foo(string a, bool b = false);
}
tentativo di prendere in giro usando Moq:
var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);
dà il seguente errore in fase di compilazione:
Un albero di espressione non può contenere una chiamata o invocazione che utilizza argomenti facoltativi
Ho trovato il problema sopra sollevato come enhancement nell'elenco di problemi di Moq e sembra essere assegnato alla versione 4.5 (ogni volta che è).
La mia domanda è: cosa devo fare dato che quanto sopra non verrà corretto in qualsiasi momento presto? Le mie opzioni sono solo per impostare esplicitamente il valore predefinito del parametro opzionale ogni volta che lo schernisco (che tipo di sconfigge il punto di specificarne uno in primo luogo) o per creare un sovraccarico senza il bool (come quello che avrei fatto prima del C# 4)?
O qualcuno ha trovato un modo più intelligente per superare questo problema?
sarebbe ragionevole specificare solo It.IsAny() per il secondo parametro? –
Un anno e mezzo dopo è ancora vero .. – Mukus