我有这个基类
public abstract class Third : IThird
{
public abstract ThirdUser GetUserDetails(HttpRequestBase request);
}
和这个派生类
public class LiProvider : Third
{
public override ThirdUser GetUserDetails(HttpRequestBase request) { }
}
我试着像这样覆盖Moq:
mockLiProvider.Setup(x => x.GetUserDetails(It.IsAny<HttpRequestWrapper>())).Returns(user);
但它返回null
,而不是user
中的Setup
。
user
肯定会在此测试中初始化。
我怎么嘲笑这个?
答案 0 :(得分:2)
不应该
mockLiProvider.Setup(x => x.GetUserDetails(It.IsAny<HttpRequestBase>())).Returns(user);
而不是
mockLiProvider.Setup(x => x.GetUserDetails(It.IsAny<HttpRequestWrapper>())).Returns(user);#
请注意It.IsAny<>
中的不同类型,我使用的是HttpRequestBase
而不是HttpRequestWrapper
。
您的示例并未显示如何调用它。
我写了这个简单的测试,就像这样:
mockLiProvider.Object
.GetUserDetails(new HttpRequestWrapper(new HttpRequest("a.txt","http://a.com","")));
并且它适用于您的版本(HttpRequestWrapper
)。
但是,如果您提供了HttpRequestBase
的其他衍生产品,则It.IsAny
可能与该类型不匹配。