在抽象方法的覆盖上使用最小起订量?
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
可能与类型不匹配。
我有这个基地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
可能与类型不匹配。