Dada la siguiente interfaz:
public interface IFoo
{
bool Foo(string a, bool b = false);
}
Intentando burlarse de él 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 expresión no puede contener una llamada o invocación que utilice argumentos opcionales.
Encontré el problema mencionado anteriormente como una mejora en la lista de problemas de Moq y parece estar asignado a la versión 4.5 (siempre que sea así).
Mi pregunta es: ¿qué debo hacer dado que lo anterior no se solucionará pronto? ¿Son mis opciones solo establecer explícitamente el valor predeterminado del parámetro opcional cada vez que me burlo de él (lo que anula el punto de especificar uno en primer lugar) o crear una sobrecarga sin el bool (como lo que habría hecho? antes de C # 4)?
¿O alguien ha encontrado una forma más inteligente de superar este problema?