Dada a seguinte interface:
public interface IFoo
{
bool Foo(string a, bool b = false);
}
Tentando zombar dele usando o Moq:
var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);
fornece o seguinte erro no tempo de compilação:
Uma árvore de expressão pode não conter uma chamada ou invocação que use argumentos opcionais
Eu encontrei o problema acima levantado como um aprimoramento na lista de problemas do Moq e ele parece estar atribuído à versão 4.5 (sempre que houver).
Minha pergunta é: o que devo fazer, pois o que foi dito acima não será corrigido tão cedo? Minhas opções são apenas definir explicitamente o valor padrão do parâmetro opcional toda vez que eu o zoo (o que meio que anula o ponto de especificar um em primeiro lugar) ou criar uma sobrecarga sem o bool (como o que eu teria feito antes de C # 4)?
Ou alguém encontrou uma maneira mais inteligente de superar esse problema?