使用 Moq 模拟 COM+ 包装器失败
本文关键字:失败 包装 COM+ Moq 模拟 使用 | 更新日期: 2023-09-27 17:56:06
我有一个用于COM+接口的包装类,我需要模拟它。
这是该方法在套接字接口上的签名
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;
});
但是对于返回中的"o"参数,我得到
The value passed to the method is never used because it is overwritten in the
method body before being read
我错过了什么?
这是因为ref
关键字。 请参阅这些问题。 第二个对此进行了一些尝试,尽管它们可能无法满足您的需求。
不能在 lambda 表达式中使用 ref 或 out 参数
在最小起订量中分配输出/引用参数
如果可以重构以避免使用ref
,请执行此操作。 否则,手掷存根。
public class StubSocket
{
int MakeRequest(object ServiceId, object Host, object Port, object Request, ref object pResponse)
{
pResonse = "Response";
return 0;
}
}