给定以下界面:
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之前)?
还是有人遇到了更聪明的方法来克服这个问题?
5
仅将It.IsAny <bool>()指定为第二个参数是否合理?
—
Paul d'Aoust 2013年
一年半后这仍然是正确的..
—
Mukus
@Mukus,放心PR,兄弟。
—
IamDOM