首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有泛型签名的AutoMoq方法

使用带有泛型签名的AutoMoq方法
EN

Stack Overflow用户
提问于 2015-10-20 23:18:48
回答 1查看 1K关注 0票数 2

目前,我正在使用一个使用xUnit、AutoMoq、AutoFixture和AutoFixture.XUnit2的测试框架。我遇到了使用通用签名来模拟方法的问题。

AutoFixture似乎可以很好地处理通用项。如果我请求一个CustomeObject<Task<List<Task<string>>>>,或者其他一些荒谬的嵌套泛型类型,它似乎按照预期的方式生成它们,直到最后一个节点。

但是,如果我有这样的接口:

代码语言:javascript
复制
public interface ITestInterface{
    T Get<T>();
}

然后尝试从我从AutoMoq获得的模拟调用方法,它只返回null。因此,例如:

代码语言:javascript
复制
[Theory]
[MyAutoDaqaAttribute]
public async Task ATest(
    Mock<ITestInterface> service
) {
    var result = service.Object.Get<string>();
}

在此代码中,结果将为空。我觉得很奇怪。它不应该进入自动夹具并尝试创建一个T类型的值,即一个新字符串吗?自动夹具似乎已经表明,它可以很好地处理泛型。

还是您总是只需要手动设置任何在其签名中具有泛型的模拟方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 00:43:10

默认情况下,模拟对象不会通过AutoFixture。不过,您可以使用AutoConfiguredMoqCustomization

但是,在您的示例中,该方法是通用的。AutoConfiguredMoqCustomization不适用于一般方法,您必须手动设置该方法。

这里提取

AutoConfiguredMoqCustomization也不配置通用方法。但是,您可以使用ReturnsUsingFixture扩展方法轻松地设置它们: converter.Setup(x => x.Convert("10.0")) .ReturnsUsingFixture(夹具);

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33248438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档