最佳答案
鉴于以下接口:
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之前会做的那样) ?
还是有人找到更聪明的方法来解决这个问题?