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