Учитывая следующий интерфейс:
public interface IFoo
{
bool Foo(string a, bool b = false);
}
Попытка издеваться над ним с помощью Moq:
var mock = new Mock<IFoo>();
mock.Setup(mock => mock.Foo(It.IsAny<string>())).Returns(false);
дает следующую ошибку во время компиляции:
Дерево выражения не может содержать вызов или вызов, использующий необязательные аргументы.
Я обнаружил, что проблема выше поднята как улучшение в списке проблем Moq, и похоже, что она относится к выпуску 4.5 (когда бы то ни было).
Мой вопрос: что мне делать, учитывая, что вышеуказанное не будет исправлено в ближайшее время? Есть ли у меня варианты только либо явно устанавливать значение по умолчанию для необязательного параметра каждый раз, когда я издеваться над ним (какой вид побеждает точку указания его в первую очередь), либо создавать перегрузку без bool (например, что я сделал бы до C # 4)?
Или кто-нибудь встречал более умный способ побороть эту проблему?