W jaki sposób Moq metodę, która ma opcjonalny argument w swoim podpisie bez wyraźnego określenia go lub użycia przeciążenia?

Biorąc pod uwagę następujący interfejs:

public interface IFoo
{
    bool Foo(string a, bool b = false);
}

Próba wyśmiewania go za pomocą Moq:

var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);

daje następujący błąd w czasie kompilacji:

Drzewo wyrażeń nie może zawierać wywołania ani wywołania, które używa opcjonalnych argumentów

Znalazłem powyższy problem podniesiony jakowzmocnienie na liście problemów Moqa i wydaje się, że jest przypisana do wersji 4.5 (kiedy tylko jest).

Moje pytanie brzmi: co powinienem zrobić, biorąc pod uwagę, że powyższe nie zostanie w najbliższym czasie naprawione? Czy moje opcje tylko jawnie ustawiają domyślną wartość opcjonalnego parametru za każdym razem, gdy go szydzę (który rodzaj pokonuje punkt określania jednego na pierwszym miejscu) lub tworzy przeciążenie bez boolu (jak to, co bym zrobił przed C # 4)?

A może ktoś natknął się na sprytniejszy sposób na rozwiązanie tego problemu?

questionAnswers(2)

yourAnswerToTheQuestion