问题标签 [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.
c# - 从 AutoFixture/AutoMaq 请求模拟时,NUnit 忽略测试
我正在使用withNUnit
和AutoFixture
属性。AutoMoq
Theory
这是我的测试方法,
界面
和属性
当我构建我的解决方案时,会发现测试。当我运行测试时,以下内容将写入输出窗口:
使用xUnit.net
上述测试时运行正常。为什么不使用它NUnit
?
我在测试项目中安装了以下 Nuget 包:
- 自动夹具 3.18.1
- AutoFixture.AutoMoq 3.18.1
- 起订量 4.2.1402.2112
- NUnit 2.6.3
- NUnitTestAdapter 1.0
我在 Visual Studio 2013 Professional 中运行测试。我还尝试在单独的 GUI 运行器中运行测试,结果相同。
c# - 如果我想对一个以表达式为参数的方法进行单元测试,我应该改变什么?
如何为此方法编写单元测试:
该FindBy
方法将表达式作为参数:
到目前为止,这是我的单元测试:
但是我无法编译它,如何更改此测试以便模拟生成hamComments
and的值spamComments
。
错误 2“System.Linq.Expressions.Expression>”不包含“IsSpam”的定义,并且找不到接受“System.Linq.Expressions.Expression>”类型的第一个参数的扩展方法“IsSpam”(你是缺少 using 指令或程序集引用?)
c# - 使用 AutoFixture 模拟依赖项
我最近开始使用 AutoFixture+AutoMoq,我正在尝试创建一个实例Func<IDbConnection>
(即连接工厂)。
这似乎工作得很好:
- 我的测试系统可以调用委托,它会得到一个模拟
IDbConnection
- 然后我可以打电话给
CreateCommand
它,这会让我模拟IDbCommand
- 然后我可以打电话给
ExecuteReader
它,这会让我模拟IDataReader
我现在想在 的模拟上执行其他设置,例如在调用时IDataReader
使其返回。true
Read()
从我读过的内容来看,我应该Freeze
为此使用:
不过,这似乎不符合我的期望。当我打电话时IDbCommand.ExecuteReader
,我会得到一个不同于我刚刚冻结/设置的阅读器。
这是一个例子:
我究竟做错了什么?我如何获得其他固定装置,例如IDbCommand
,以使用 的模拟实例IDataReader
?
nunit - AutoMoq 接口方法未返回 AutoFixture/AutoMoq + NUnit AutoData 冻结对象
使用 AutoMoqCustomization 我希望我的测试能够工作,但它失败了。
这是测试:
如果我添加一行代码,我可以让它工作。但我不想这样做,因为它应该被推断出来?
MyClass 有一个带有 IRepo 的构造函数。这就像一个魅力,因为如果我在测试中使用上面的行,我就通过了测试。
通常我在没有自动数据的情况下编写我的测试,它更加冗长:
所以我的代码已经更干净了,但就像上面的最后一颗樱桃一样:) 有什么想法吗???
如何运行:
添加 Nuget 包:
完整代码:
teamcity - 重定向 AutoFixture 的起订量参考
我在我们的构建服务器上的单个测试项目遇到了一些问题。项目中的一些测试使用 AutoFixture 和 AutoMoq。
由于 AutoMoq 使用的 Moq 版本比我们使用的版本旧,因此我们在 app.config 中有一个重定向(我假设由 AutoMoq NuGet 脚本制作):
测试在开发人员机器上运行没有问题,但是一个项目(在许多使用 AutoFixture、AutoMoq 和 Moq 的项目中)在使用 TeamCitys NUnit runner 运行时向我抛出了这个问题:
为什么 Moq 引用(显然是 4.0.10827.0)没有重定向到 4.2.1409.1722?
我检查了构建服务器工作目录,app.config 和 dll 看起来不错。
c# - AutoFixture & AutoMoq:覆盖对象生成行为
我提议在我们公司使用 AutoFixture 和 AutoFixture.xUnit,并且已经得到授权,对于某些对象和字段,他们需要以预期方式格式化的随机数据。例如,他们希望 PersonName 只填充真实的名称(而不是 GUID),而 PhoneNumber 只填充看起来像电话号码的字符串。但是他们不想将数据注释添加到执行此操作的实际对象中,他们只是希望 AutoFixture 生成的测试数据漂亮。
我已经处理了一些 ICustomize 类以在一些类上实现贪婪的构造函数行为。是否有类似的方法来覆盖特定对象的数据生成?(例如)从列表中提取名称,或生成数据以遵循某个正则表达式?(请记住,我实际上不能将这些正则表达式添加为模型上的属性)
c# - 构造函数中的单元测试空参数
我已经为一个类编写了一个构造函数,并且我正在测试每个参数是否为空。请参见下面的示例:
IObjectA
通常我通过模拟并将它们传入来对它进行单元测试(使用 Moq)IObjectB
。上面的示例将创建 2 个单元测试来测试每个场景。
我遇到的问题是当第三个参数传递给构造函数时。它要求我改变我以前的测试,因为我突然得到一个“MyClass 的没有构造函数有 2 个参数”类型异常。
我也使用 AutoMockContainer。本质上,我希望能够通过在容器中注册一个空对象来测试构造函数。例如:
那么在构造函数中添加多少新参数并不重要。我不必更新我的单元测试。
可悲的是,上述单元测试通过了。但是出于错误的原因。该Register<T>()
方法抛出ArgumentNullException
不是在“Act”部分中执行的代码。
有没有人建议能够测试构造函数参数而不必在以后添加新参数时重新访问单元测试?
nunit - 随着更多测试的添加,AutoFixture AutoMoqData 变慢
使用 nunit 2.6.4 和 AutoMoqData,Resharper 运行器似乎正在评估要在执行单个测试之前传递给所有测试的所有参数,即使我想做的只是运行单个测试/小型测试套件。现在(我们有 1000 个测试)运行一个测试需要 2-3 分钟,这对 TDD 不起作用。
我尝试切换到 Xunit 以查看 nunit 是否是问题所在,并且在运行第一个测试之前仍然存在很大延迟。
这种行为是可以预期的吗?还是我们做错了什么?
unit-testing - 可以冻结函数的模拟吗?
我想测试我的Func
类型是否真的被执行了。为此,我创建了一个Mock
,但我遇到了Exception
来自 Autofixture 的一个。我试图Freeze
只是Func
(没有Mock
)并且这有效。有人可以解释发生了什么或指导我采取正确的方法吗?
异常消息:
Ploeh.AutoFixture.dll 中出现“Ploeh.AutoFixture.Kernel.IllegalRequestException”类型的异常,但未在用户代码中处理附加信息:检测到对 IntPtr 的请求。这是一个不安全的资源,如果使用它将使进程崩溃,因此请求被拒绝。IntPtr 请求的常见来源是对诸如 Func 或 Action 之类的委托的请求。如果是这种情况,预期的解决方法是通过指定适当的创建策略来自定义(注册或注入)违规类型。
代码: