¿Cómo puedo Moq un método que tiene un argumento opcional en su firma sin especificarlo explícitamente o usar una sobrecarga?
Dada la siguiente interfaz:
public interface IFoo
{
bool Foo(string a, bool b = false);
}
Intentando burlarse usando Moq:
var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);
da el siguiente error en tiempo de compilación:
Un árbol de expresiones no puede contener una llamada o invocación que use argumentos opcionales
He encontrado el problema anterior planteado como unamejora en la lista de problemas de Moq y parece estar asignado a la versión 4.5 (siempre que sea).
Mi pregunta es: ¿qué debo hacer dado que lo anterior no se solucionará pronto? ¿Mis opciones son solo para establecer explícitamente el valor predeterminado del parámetro opcional cada vez que me burlo de él? antes de C # 4)?
¿O alguien ha encontrado una forma más inteligente de superar este problema?