在抽象方法的覆盖上使用最小起订量?

Using moq on an override of abstract method?

我有这个基地class

public abstract class Third : IThird
{
    public abstract ThirdUser GetUserDetails(HttpRequestBase request);
}

和这个派生的class

public class LiProvider : Third
{
    public override ThirdUser GetUserDetails(HttpRequestBase request) { }
}

我试过像这样最小化这个覆盖:

mockLiProvider.Setup(x => x.GetUserDetails(It.IsAny<HttpRequestWrapper>())).Returns(user);

但它 returns null,而不是 Setup 中的 user

user在本次测试中肯定是初始化的

我该如何模拟这个?

不应该吗

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 可能与类型不匹配。