繁体   English   中英

返回传递给mocked方法的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM