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';你可以添加該方法的簽名嗎? –