问题标签 [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 回答
522 浏览

unit-testing - 使用 Autofixture 的 CreateProxy 来使用 Likeness、SemanticComparison 功能时遇到问题

在我之前询问过 Autofixture 的CreateProxy 方法的问题中,发现了一个潜在的错误

我不认为这个失败的测试是因为这个,而是我对 Likeness.Without(...).CreateProxy() 语法如何工作的持续困惑。考虑以下失败的测试,在该测试中,我通过创建对象的新实例使原始测试 变得稍微复杂一些,并认为它的创建是SUT

这是乐队:

之前的问题不够复杂,无法帮助我理解 the Sourceof theLikeness通常应该是什么。

源是否应该是SUT的输出,在这种情况下,它将与 AutoFixture 创建的模板实例进行比较?

或者源应该是 AutoFixture 创建的模板实例,在这种情况下它将与SUT的输出进行比较?

编辑:更正了测试中的错误

我意识到我错误地将属性分配给了template.Brass实例的和属性Brass 更新后的测试反映了更正,并且所有六个断言现在都通过了。StringsBandvar createdBand = new Band {Brass = template.Brass, Strings = template.Strings}

0 投票
1 回答
600 浏览

autofixture - 为什么 Autofixture Likeness 的行为不像我对这两个测试之一所期望的那样?

鉴于这些类:

为什么这个测试通过...

……这个失败了?(区别在于DrumAndBaseBand实例化)

0 投票
2 回答
3526 浏览

c# - 忽略虚拟属性

我们有用于存储的实体框架的 MVC4 项目。对于我们的测试,我们最近开始使用 Autofixture,它真的很棒。

我们的模型图非常深,通常通过 AutoFixture 创建一个对象会创建整个图:人员 -> 团队 -> 部门 -> 公司 -> 合同 -> ....等。

这个问题是时间。对象创建最多需要一秒钟。这会导致测试缓慢。

我发现自己经常做的是这样的事情:

这很有效,而且速度很快。但是这种过度规范使测试难以阅读,有时我会丢失一些重要的细节,比如.With(c => c.PersonId, 42)在 unimportant 列表中.Without()

所有这些被忽略的对象都是 Entity Framework 的导航属性,并且都是虚拟的。

有没有一种全局方法来告诉 AutoFixture 忽略虚拟成员?

我尝试过创建ISpecimentBuilder,但没有运气:

我似乎无法找到一种方法ISpecimenBuilder来检测我们正在构建的对象是另一个类中的虚拟成员。可能ISpecimenBuilder这不是执行此操作的正确位置。还有其他想法吗?

0 投票
1 回答
313 浏览

c# - Autofixture:如何以声明方式表达以下代码?

我无法以声明性方式表达以下代码:

在我的生产代码中,我有类似的东西:

SomeClass 的构造函数定义为:

TIA,

大卫

编辑:

SomeClass 看起来像

0 投票
1 回答
5729 浏览

c# - 为类型创建 AutoFixture 样本生成器

在这种情况下,我正在为特定类型创建 AutoFixture 样本构建器System.Data.DataSet。构建器将返回 a FakeDataSet,这是为测试定制DataSet的。

以下内容不起作用,dataSet始终返回 null,即使在DataSet请求 a 时也是如此(我可以通过深入request研究属性来判断)。

这种变化确实有效,但似乎过于复杂。感觉好像有更好的方法来完成同样的事情,而我只是错过了一些东西。

0 投票
1 回答
547 浏览

unit-testing - F# UnitTest 项目中的 AutoFixture 未在测试资源管理器中显示单元测试

我有一个 Visual Studio 2012 项目并安装了以下 NuGet 包:

  • 使用 Moq 进行自动模拟的 AutoFixture
  • 使用 xUnit.net 数据理论的自动夹具
  • 自动夹具
  • 起订量
  • xUnit.net:扩展
  • xUnit.net:跑步者
  • xUnit.net

给定以下人为的 Logger 类 (Logger.fs):

和以下单元测试:

在确保我显示所有测试并构建项目后,测试资源管理器无法识别单元测试。项目构建正确,在构建、常规或测试输出日志中没有错误或警告。

如果我用 Fact 属性替换当前的 Theory 和 AutoData 属性,就会出现测试。

F# 测试项目是否支持 AutoFixture?其他人可以复制这个并知道我做错了什么吗?

0 投票
1 回答
17904 浏览

c# - Autofixture Fixture.Build().With() 在相​​同的属性名称上

当我使用“with”方法设置属性时,它会将同名的嵌套对象上的所有属性都保留为空。

(我使用 autofixture 的最新版本为 3.0.8)

在这种情况下,obj.Id == "something" 等于 true,但 obj.Things[0].Id == null 也等于 true。

我认为有错误或我弄错了;有人可以帮忙吗?

0 投票
2 回答
835 浏览

autofixture - AutoFixture 的新手试图了解它,但我看不到它对我有帮助

目前,我正在使用定制的假对象,在幕后使用 NSubstitute 来创建实际对象,但随着项目的发展,它变得非常难以维护,所以我正在尝试寻找替代品,我希望 AutoFixture 是适合工作的工具。

我阅读了文档,但我很挣扎,因为几乎没有文档,而且我阅读了 Mark Seemann 的大部分博客文章,包括 CheatSheet。

我很难掌握的一件事是如何使用具有参数的构造函数创建一个对象,在我的情况下,我需要将参数传递给 CsEmbeddedRazorViewEngine 以及将 HttpRequestBase 传递给 ControllerContext。

我看到的方式是我需要创建一个假对象,最后创建一个自定义对象,将它们注入到

我还研究了 NBuilder,在那里传递参数似乎稍微简单一些,但我听说过关于 AutoFixture 的好消息,我想试一试。:)

我正在尝试减少我拥有的假对象的数量,所以这是一个真正的测试,我怎样才能用 AutoFixture 做同样的事情?

PS 我使用 xUnit 作为我的测试框架和 NSubstitute 作为我的模拟框架我应该安装 AutoFixture.Xunit 和 AutoFixture.AutoNSubstitute 吗?

更新:在越来越多地了解它之后,我想它不是适合这项工作的工具,因为我试图用 AutoFixture 替换我的测试替身工厂,而不是用它设置我的 SUT。

由于奇怪的原因,我认为它正在做同样的事情 NBuilder 正在做的事情,从我所见,它们是非常不同的工具。

所以经过一番思考,我想我会去改变我在我的测试替身工厂中拥有的方法到对象,然后使用 AutoFixture 创建我的 SUT 并将我的测试替身注入它。

0 投票
2 回答
3071 浏览

c# - AutoFixture:如何从 System.Type 创建匿名

我只需要使用 System.Type 从 AutoFixture 创建一个对象。但是,似乎没有CreateAnonymous()简单地采用类型的重载。他们都期望编译时通用 T。有没有办法将 System.Type 转换为 T?

编辑使用细节:

我正在使用 AutoMapper,它有一个用于注入组件以支持复杂映射场景的钩子:

从签名中可以看出,客户端可以注册FuncAutoMapper 在需要注入服务(主要是 ValueResolver 实现)时调用的。

在生产构建中,此方法调用我的 StructureMap 容器以检索组件。但是,当对我的映射代码进行单元测试时,我必须提供存根实现,否则 AutoMapper 会引发异常。由于我使用 AutoFixture + Moq 作为我的自动模拟容器,让 AF 新建一个完全水合的存根似乎很自然,这样我就可以专注于编写单元测试代码。

0 投票
1 回答
1306 浏览

c# - 在这种情况下如何使用 AutoFixture?

我有以下代码:

并且通过了测试。

然后我尝试使用 AutoFixture,如下所示:

失败了。特别是,patientRecord在第二种情况下,没有正确填充。

我在这里做错了什么?