我尝试使用Moq和nunit制作一个通用的辅助方法,如下所述
public void PrepareWebRequest<T>() where T : new()
{
httpCommunicator = new Mock<IHttpCommunicator>();
httpCommunicator.Setup(x => x.Post(It.IsAny<Object>(),
It.IsAny<string>())).Throws<T>();
service = new ApiClient(httpCommunicator.Object);
}
但是这会导致以下错误:
类型'T'不能在泛型类型或方法'Moq.Language.IThrows.Throws()'中用作类型参数'TException'。没有从'T'到'System.Exception'的装箱转换或类型参数转换。
我知道可以通过不在Moq上使用泛型方法来重构,但是我真的想知道我做错了什么。
祝你好运 拉斯穆斯
答案 0 :(得分:0)
问题是Where子句中缺少异常。应该是
public void PrepareWebRequest<T>() where T : Exception, new()
{
httpCommunicator = new Mock<IHttpCommunicator>();
httpCommunicator.Setup(x => x.Post(It.IsAny<Object>(),
It.IsAny<string>())).Throws<T>();
service = new ApiClient(httpCommunicator.Object);
}