Учитывая следующий интерфейс:
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 (например, что бы я сделал до С# 4)?
Или кто-нибудь может найти более умный способ преодолеть эту проблему?