我有一个COM +接口的包装类,我需要模拟它。
这是Socket接口上该方法的签名
int MakeRequest(object ServiceId, object Host, object Port,
object Request, ref object pResponse);
我正在使用Moq尝试模拟它,就像这样
object pResponse = String.Empty;
var socket = new Mock<Socket>();
socket.Setup(x => x.MakeRequest(It.IsAny<int>(), It.IsAny<string>(),
It.IsAny<int>(), It.IsAny<string>(),
ref pResponse))
.Returns((int i, string s, int ii, string ss, object o) =>
{
o = "Response";
return 0;
});
但对于&#39; o&#39;我得到的回报中的参数
The value passed to the method is never used because it is overwritten in the
method body before being read
我错过了什么?
答案 0 :(得分:1)
这是因为ref
关键字。看到这些问题。第二个尝试了一些,虽然他们可能无法满足你的需求。
Cannot use ref or out parameter in lambda expressions
Assigning out/ref parameters in Moq
如果您可以重构以避免使用ref
,请执行此操作。否则,手动滚动存根。
public class StubSocket
{
int MakeRequest(object ServiceId, object Host, object Port, object Request, ref object pResponse)
{
pResonse = "Response";
return 0;
}
}