moq 带有模板参数的方法
moq a method with a template parameter
我正在创建一个单元测试,使用 moq.Mock class 来模拟这种情况。
我想用模板参数模拟一个方法,这样我就可以检查发送给它的是什么。
mockGateway = new Mock<GatewayClass>();
//this one works
mockGateway.Setup(e => e.Log(It.IsAny<LogLevel>(), It.IsAny<Exception>(), It.IsAny<string>(), It.IsAny<object[]>()))
.Callback<LogLevelClass, Exception, string,object[]>(LogCheck);
//this one doesnt work
mockGateway.Setup(e => e.Send<RequestClass>(It.IsAny<RequestClass>()))
.Callback<RequestClass>(SendCheck);
安装程序(例如..给出了一个'Ambiguous invocation'编译错误。
RequestClass 给出编译错误“类型必须可转换为 IMessage 才能用作通用发送中的参数 TMessage,
但 RequestClass 实现了 IMessage,但查看时的元数据并未显示这一点。
因为我在不同的解决方案中对其定义的解决方案进行测试。
private void LogCheck(LogLevel level, Exception ex, string str, object[] paramObjs)
{
//do something...
}
private void SendCheck<TMessage>(TMessage message)
where TMessage : class, IMessage,IRequestMessage, new()
{
//do something...
}
public class RequestClass: IMessage, IRequestMessage
{
public RequestClass();
...other methods..
}
public class GatewayClass : IGateway
{
public ISynchronousRequestResult<ResultResponse> Send<TMessage>(TMessage message)
where TMessage : class, IMessage,IRequestMessage, new()
{
return service.Send<ResultResponse,TMessage>(message);
}
}
任何人都可以告诉我这个 should/could 是如何完成的吗?
检查多个 IMessage。
我发现我引用了一个不是我自己的 Microsoft IMessage。
我正在创建一个单元测试,使用 moq.Mock class 来模拟这种情况。 我想用模板参数模拟一个方法,这样我就可以检查发送给它的是什么。
mockGateway = new Mock<GatewayClass>();
//this one works
mockGateway.Setup(e => e.Log(It.IsAny<LogLevel>(), It.IsAny<Exception>(), It.IsAny<string>(), It.IsAny<object[]>()))
.Callback<LogLevelClass, Exception, string,object[]>(LogCheck);
//this one doesnt work
mockGateway.Setup(e => e.Send<RequestClass>(It.IsAny<RequestClass>()))
.Callback<RequestClass>(SendCheck);
安装程序(例如..给出了一个'Ambiguous invocation'编译错误。
RequestClass 给出编译错误“类型必须可转换为 IMessage 才能用作通用发送中的参数 TMessage, 但 RequestClass 实现了 IMessage,但查看时的元数据并未显示这一点。 因为我在不同的解决方案中对其定义的解决方案进行测试。
private void LogCheck(LogLevel level, Exception ex, string str, object[] paramObjs)
{
//do something...
}
private void SendCheck<TMessage>(TMessage message)
where TMessage : class, IMessage,IRequestMessage, new()
{
//do something...
}
public class RequestClass: IMessage, IRequestMessage
{
public RequestClass();
...other methods..
}
public class GatewayClass : IGateway
{
public ISynchronousRequestResult<ResultResponse> Send<TMessage>(TMessage message)
where TMessage : class, IMessage,IRequestMessage, new()
{
return service.Send<ResultResponse,TMessage>(message);
}
}
任何人都可以告诉我这个 should/could 是如何完成的吗?
检查多个 IMessage。
我发现我引用了一个不是我自己的 Microsoft IMessage。