问题标签 [automoq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1183 浏览

autofixture - AutoMoq 具有特定构造函数的抽象类

有没有办法设置 AutoFixture.AutoMoq 以便在模拟抽象类时使用特定的构造函数?

我需要测试在我的抽象类中完成的实现。但是,我确实需要使用一个特定的构造函数。

问候,


编辑:

我正在尝试使用类似下面的东西,但仍然无法正常工作。这个类是抽象的,所以我需要模拟它,但我需要一个非常具体的构造函数。

如何告诉 AutoMoq 在模拟 A 时请不要使用 MockConstructorQuery 或 GreedyMockConstructorQuery。只需使用 QueryableParamConstructorQuery。

fixture.Customize(新的ConstructorCustomization(typeof(A),新的QueryableParamConstructorQuery()));

0 投票
1 回答
1149 浏览

c# - AutoFixture AutoMoq 将模拟对象转换为接口

我希望有人能给我一些想法。

我需要创建一个满足以下条件的模拟对象:

  1. 它实现了接口 IEntity。
  2. 它使用我在 EntityBase 中已有的基本实现。
  3. 这些属性是使用 AutoFixture 自动生成的。

我尝试了几种替代方法,并以以下代码结束:

但是,我得到以下异常:

Mock 类型已经通过访问它的 Object 属性进行了初始化。添加接口必须在此之前完成。:(

0 投票
1 回答
187 浏览

c# - 使用 UnityAutoMoqContainer 注册通用接口

我们在单元测试中使用 UnityAutoMoq 来模拟我们的大部分接口,但我最近遇到了一种情况,我们希望使用测试框架来更完整地模拟实际行为(如果这可以帮助您接受什么,可以将其称为集成测试)我正在做)。

我希望 UnityAutoMoq 让我注册具体的映射,而不是让 UnityAutoMoqContainer 推迟到模拟接口。这适用于我尝试过的所有东西,除了通用接口。如果你像我一样有视觉效果,这里有一个我正在尝试的片段:

正如您从上面看到的,我将通用接口注册到通用具体,然后根据注入工厂使用传入类型来解决它(为简单起见,省略了实际实现)。这适用于普通 UnityContainer,返回预期的混凝土。UnityAutoMoqContainer 而是返回一个模拟,完全绕过注入工厂。

有没有人尝试过像我想要完成的事情?有任何想法吗?

0 投票
0 回答
72 浏览

c# - Automoq 创建对象而不调用构造函数

有没有办法Automoq做些什么FormatterServices.GetUninitializedObject()

我有一个类,可以说它不是以最好的方式编写的,我只需要使用 创建该类的对象Automoq,但我遇到了一个 ctor 问题。ctor 确实调用了一些我必须绕过的数据库例程。

0 投票
1 回答
1259 浏览

nunit - AutoFixture 与 NUnit AutoMoq 阻止测试运行

更新: AutoFixture 团队在 3.51 版中发布了一个修复程序

只需扩展AutoDataAttribute这样做:

AutoData然后使用这个新属性而不是NUnit 测试中的内置属性。

从 v4 开始,此行为是默认行为。


上一篇

我正在尝试将 AutoFixture 与 NUnit 和 Moq 一起使用,使用以下 AutoMoqDataAttribute :

但是当我运行这个测试时:

测试永远不会运行。AutomMoqData 被正确命中,但测试中的代码永远不会执行,一切都结束了,没有任何警告,并显示以下消息:

该测试也不会出现在测试运行器列表中。

但是如果我删除参数:

一切运行良好,但如果没有传递参数,这将不太有用:)

我在这里错过了什么吗?

以下是 Nuget 包版本列表:

编辑: 按照@MarkSeemann 的建议,我在 Github 上提交了一个问题

0 投票
2 回答
1575 浏览

c# - 单元测试简单方法时如何引发异常

我有一个服务调用包装器,它只在调用中将参数转发给服务。包装器的原因是我们可以使用 DI 容器注入包装器,从而模拟单元测试。

这是包装器的样子

一切正常,现在我需要吞下 TWCProxy 崩溃的异常。所以现在我的包装看起来像这样。

我必须编写以下单元测试

  1. GetLocalWeather() 不会在发生内部异常时使应用程序崩溃
  2. GetLocalWeather() 记录异常

现在要测试这两种情况,我需要以某种方式引发崩溃;如何使用 NUnit 和 Automoq/Moq 做到这一点?

0 投票
1 回答
187 浏览

c# - 具有多个相同类型实例的构造函数

我有一个带有这样的构造函数的类:

在这种情况下如何使用 AutoFixture 创建MyClass?我知道当它只有一个IMyService参数时,我们可以使用AutoMoqFreeze模拟,但在这种情况下,我不确定我们是否可以模拟Freeze三个,因为我认为最后一个将用于所有三个参数。

0 投票
2 回答
542 浏览

c# - 没有泛型的测试类简化

IEquatable<T>除了 SUTs 类型之外,我有大量模型都实现了,我有几个看起来相似的测试类。测试验证了实现和其他一些常见方面都由被测模型实现。

使用抽象的泛型测试类并没有太大的作用,我放松了对操作符的编译时重载决议,无论如何我必须为每种类型实现一个派生的测试类。

使用该MemberData属性有助于消除对派生测试类的需求,但运算符的编译时重载决议仍然存在。

是否存在另一种方法,例如InlineData我在运算符上维护编译时重载分辨率并拥有一个对象集合(无论它们是否是类型)来调用测试方法?

在下面的示例中,我使用MemberData但必须使用反射来调用==and!=运算符,并且测试方法签名不是最佳的,因为它们未使用(仅使用泛型类型参数)。

有谁知道一种方法可以让我维护一个对象集合并使用编译时重载解决方案进行测试?

0 投票
0 回答
140 浏览

c# - AutoMoq 尊重 MaxLengthAttribute

我正在使用AutoFixtureAutoMoq来生成和配置Mock 到 interface。该接口使用MaxLength属性来指定每个属性的最大长度。

如何使生成的模拟尊重该MaxLength属性。

请考虑一下我有大量使用此属性的属性吗?(不仅仅是一个,就像在这个例子中一样)。

创建模拟的代码是这样的:

MyClass 在哪里:

我尝试过像这样制作自定义样本生成器:

为了通过调用将其添加到夹具中fixture.Customizations.Add(new MaxLenghtSpecimenBuilder());

但它不起作用。它没有获得自定义属性。它总是返回 null。

0 投票
1 回答
318 浏览

c# - Autofixture.Automoq - 泛型使 bool 始终为真

使用 AutoFixure 和 AutoMoq 我试图找到一种方法来制作Successalways true,无论是什么类型T。使用 注册假货很容易IResult,但这似乎并不适用IResult<T>