[英]Returning the value that was passed into a mocked method
我在接口上有一个方法:
Someclass DoSomething(Someclass什么);`
我做不到.Returns(x => x)
因为错误:
无法将lambda表达式转换为类型Someclass,因为它不是委托类型。
有任何想法吗?
看看这些方法重载:
Returns(TResult value)
Returns<T>(Func<T, TResult> valueFunction)
对你来说很明显,C#编译器应该选择第二个重载。 但实际上C#编译器无法从您传递的参数x => x
推断泛型参数T
类型。 这就是编译器选择非泛型方法并尝试将lambda转换为SomeClass的原因。
要解决此问题,您应该帮助编译器推断通用参数T
类型。 您可以通过显式指定委托参数的类型来实现:
.Returns((SomeClass x) => x);
或者您可以手动指定T
类型
.Returns<SomeClass>(x => x)
您可以创建someclass
的实例并返回相同的内容
someclass cl = new someclass
{
//property initialization
};
mockinstance.Setup(s => s.DoSomething(cl)).Returns(cl);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.