给定以下界面:
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 版本(无论何时)。
我的问题是:鉴于上述情况不会很快得到解决,我该怎么办?我的选择是否只能在每次模拟时显式设置可选参数的默认值(这会破坏首先指定一个的点)或创建没有布尔的重载(就像我会做的那样在 C# 4) 之前?
或者有没有人遇到过更聪明的方法来克服这个问题?