Como posso usar um método que tenha um argumento opcional em sua assinatura sem explicitamente especificá-lo ou usando uma sobrecarga?

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);

dá o seguinte erro em tempo de compilação:

Uma árvore de expressão não pode conter uma chamada ou invocação que usa argumentos opcionais

Eu encontrei a questão acima levantada como umAprimoramento na lista de problemas de Moq e parece ser atribuído à versão 4.5 (sempre que for).

Minha pergunta é: o que devo fazer, dado que o item acima não será corrigido tão cedo? São minhas opções apenas para definir explicitamente o valor padrão do parâmetro opcional toda vez que eu zombar dele (que meio que vence o ponto de especificar um em primeiro lugar) ou para criar uma sobrecarga sem o bool (como o que eu teria feito antes de C # 4)?

Ou alguém se deparou com uma maneira mais inteligente de superar esse problema?

questionAnswers(2)

yourAnswerToTheQuestion