我正在使用moq.Mock类创建一个Unit测试来模拟这种情况。 我想用模板参数模拟一个方法,以便我可以检查发送给它的内容。
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);
设置(e ..提供&#39;不明确的调用&#39;编译错误。
RequestClass给出了编译错误&#39; Type必须可转换为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);
}
}
有谁可以告诉我应该/可以做什么?
答案 0 :(得分:0)
检查多重IMessage。
我发现我提到了一个不属于我自己的微软IMessage。