问题标签 [autofixture]

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 回答
1063 浏览

c# - 使用 AutoFixture 对使用 Castle Windsor 的应用程序进行集成测试的技术

我是 AutoFixture 的新手,所以我不知道以下想法是否有意义或是否合理。我有一个我负责集成测试的应用程序,它大量使用了 Castle Windsor。为了简化依赖管理并使我的测试更像应用程序代码,我一直在我的测试初始化​​方法中构建 Windsor 容器,并使用 container.Resolve 来实例化我正在测试的代码。我想放弃这种方法,因为它在某些情况下限制了我的灵活性。

我想做的是进行如下所示的测试:

为此,我可以执行以下操作:

这样做确实有效,但我想避免的是需要将每个接口复制到从 Windsor 容器到 AutoFixture IFixture 的实现映射。

0 投票
2 回答
1783 浏览

c# - 如何使用 AutoFixture 简化单元测试 DDD 值对象平等

我目前正在使用 xUnit、Moq 和 AutoFixture 为我的域项目编写单元测试。让我们看看这个测试方法:

如您所见,我正在测试类 CoreAddress 及其 SameValueAs 方法。要测试所有可能的情况,我必须创建测试方法OnOtherHasDifferentFirstnameOnOtherHasDifferentLastname等。这种模式可以吗?关于 AutoFixture 的使用,我能以某种方式简化这一点吗?

0 投票
1 回答
713 浏览

autofixture - 如何冻结 AutoFixture 中的空实例

我将 Autofixture 用作 SUT 工厂,并且在冻结空实例时遇到了困难。

我想做类似的事情:

但很快意识到这是错误的。我已经使用这个解决了这个问题:

但这似乎不对。

希望有人会为 HiveMind 提供正确的解决方案。

0 投票
1 回答
4614 浏览

c# - 强制 AutoFixture 使用最贪婪的构造函数

我有一个具有多个构造函数的数据类型,我需要 AutoFixture 来选择最贪婪的(一个参数最多的)。默认行为是选择编号最小的构造函数。

作者的博客文章http://blog.ploeh.dk/2009/03/24/HowAutoFixtureCreatesObjects.aspx似乎并没有暗示有一种方法可以覆盖这种行为,所以有可能吗?如果有,怎么做?

0 投票
1 回答
770 浏览

moq - 通过带有 AutoMoq 的 AutoFixture 注入的模拟对象,意外行为

我刚刚使用 AutoFixture 创建了我的第一个测试。SUT 具有以下构造函数。

测试设置具有以下代码。

现在,当我检查 的内容时sut,我看到IpAddress注入的实例的属性IClientDataProvider返回 null 而不是“whatever”。

我做错什么了?


我将服务和必要的接口复制到一个空项目中,然后模拟按预期工作。

作为实际项目中服务的构造函数参数类型的接口在 3 个单独的程序集中定义,这些程序集具有进一步的依赖关系。我在测试开始时遇到了几个意外的“无法加载程序集”错误,因为那些直接引用的程序集需要更多的程序集。所以这似乎是一个程序集加载问题。

但是,我尝试了测试的变体,手动创建 SUT 实例,使用 Moq 手动创建模拟对象,测试按预期工作

0 投票
1 回答
1496 浏览

autofixture - 如何找出 AutoFixture 抛出 Kernel.OmitSpecimen 异常的原因

我正在研究一个相当嵌套的模型,它有一些循环引用。它还使用实体框架,因此所有列表都是ICollection<T>. 为了适应这一点,我正在配置 AutoFixture,如下所示:

当我尝试创建类型时

AutoFixture 有问题并抛出以下错误

System.InvalidCastException:无法将“Ploeh.AutoFixture.Kernel.OmitSpecimen”类型的对象转换为“The.Model.Language”类型

如果我排除Sessiontype中的集合Language,AutoFixture 会为图中的另一种类型抛出相同的异常。

有没有办法从 AutoFixture 中提取更多信息,例如导致错误的属性?

为什么 AutoFixture 试图将我的类型转换为 OmitSpecimen 以及在此过程中可能发生了什么来阻止它被转换?

我在这里为堆栈跟踪创建了一个要点。

更新

我设法重现了这个问题。给定这对对象

调用_fixture.CreateAnonymous<Session>();将抛出强制转换异常。

0 投票
1 回答
1809 浏览

unit-testing - Autofixture 和 WebApi 控制器

我正在使用 AutoFixture 尝试为 WebApi 站点测试我的控制器。如Ploeh 的博客所述,我正在使用带有 Moq 的 AutoData 功能。

我的控制器在构造函数中采用了 IDepartmentManager。这是我的测试:

当我运行此测试时,它失败并显示以下内容:

GetCallsManagerCorrectly 失败:
System.InvalidOperationException:获取理论数据时引发异常 Provision.Tests.WebApiControllerTests.DepartmentControllerTests.GetCallsManagerCorrectly:System.Reflection.TargetInvocationException:调用目标已引发异常。---> System.ArgumentException:只允许使用“http”和“https”方案。参数名称:System.Net.Http.HttpRequestMessage.set_RequestUri(Uri value)处的值

首先,这仍然是编写这些测试的有效且推荐的方式吗?我喜欢它使一切变得多么小。

其次,我应该怎么做才能解决这个问题?如果我将测试更改为:

它通过了,但是我失去了自动构建控制器的能力,如果我向构造函数添加参数仍然可以。

0 投票
1 回答
3117 浏览

c# - AutoFixture 是否会被深圆形对象图所淹没

我正在使用的域模型有很多循环引用。事实上,可以从图中的任何点到达大多数对象。许多这些循环引用也在集合中。所以 aBooking将有一个集合,Students其中有一个集合,Courses其中有一个集合,Bookings依此类推。这不是真正的模型,只是一个例子。这个问题是由大约三十个不同类别的组合引起的。

为了使用这个模型,我像这样配置和使用 AutoFixture

这会导致 AutoFixture 运行大约 20 分钟,直到它最终以 OutOfMemoryException 失败。

这个模型是否要求 AutoFixture 创建一个永远不会结束的无限图?如果是这样,有什么方法可以配置它来限制图形的深度?

0 投票
1 回答
6105 浏览

c# - AutoFixture 作为 Automocking 容器与 Automocking 的区别?

我开始使用起订量,但据我了解,即使我真的不关心它们,我也总是必须模拟所有可以调用的方法。

有时需要很长时间来模拟你忘记你想要做什么的东西。所以我一直在研究自动模拟,但我不确定我应该使用哪个。

AutoFixture 作为自动模拟容器

自动模拟

我根本不知道如何使用第一个。我有点得到第二个,但从未真正尝试过。

我不确定一个是否比另一个更好。我唯一知道的是我已经在使用 AutoFixtures,这是第一个依赖项。

因此,从长远来看,使用第一个可能是有意义的,但就像我说的那样,我找不到任何关于如何使用它的基本教程。

编辑

我正在尝试遵循“Nikos Baxevanis”示例,但遇到了错误。

我认为这是因为我的 petapoco unitOfWork 财产

不知道我是否必须以某种方式或什么来模拟这个。

0 投票
2 回答
1466 浏览

c# - 使用 autofixture 创建结构不会引发公共构造函数错误

我有一个结构,例如:

并想使用 autofixture 在我的单元测试中创建它。我尝试使用以下内容:

但这会引发AutoFixture was unable to create an instance错误。是否可以使用 autofixture 自动创建结构?怎么可能做到这一点?请注意,我正在处理遗留代码,因此需要处理结构。:)

编辑 :

改变了

因为它与问题无关。