返回传递给mocked方法的值

时间:2017-04-19 21:23:12

标签: c# unit-testing moq

我在界面上有一个方法:

Someclass DoSomething(Someclass what);`

由于错误,我无法.Returns(x => x)

  

无法将lambda表达式转换为类型Someclass,因为它不是a   代表类型。

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

看看这些方法重载:

Returns(TResult value)
Returns<T>(Func<T, TResult> valueFunction)

对你来说很明显,C#编译器应该选择第二个重载。但实际上C#编译器无法从您传递的参数T推断泛型参数x => x的类型。这就是为什么编译器选择非泛型版本的方法并尝试将lambda转换为SomeClass的原因。

要解决此问题,您应该帮助编译器推断泛型参数T的类型。您可以通过显式指定委托参数的类型来执行此操作:

.Returns((SomeClass x) => x);

或者您可以手动指定T的类型

.Returns<SomeClass>(x => x)

答案 1 :(得分:1)

您可以创建client_encoding = utf8的实例并返回相同的

someclass