0
我正在使用moq.Mock类创建单元测试来模拟情况。 我想模拟一个模板参数的方法,以便我可以检查发送给它的内容。moq使用模板参数的方法
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 ..给出了一个“不明确调用”编译错误。
的RequestClass给出“的类型必须能够转换到一个消息对象,以便作为参数在使用TMessage一个编译错误通用发送, 但RequestClass实现即时聊天,但观看时元数据犯规显示此。 因为我在不同的解决方案,它在定义的解决方案做了测试。
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);
}
}
能anyo你告诉我应该怎样做/可以做些什么?
您可以将'RequestClass'的定义添加到您的问题中吗? –
我明天可以添加,但是它实现了IMessage。 它有一个Log方法,与LogCheck 相匹配,它有一个与SendCheck参数相匹配的发送方法,但返回值不是无效的。 你还想知道什么? – f1wade
我只想整个画面。你也说错误消息提到'SendAndListen';你可以添加该方法的签名吗? –