问题标签 [automocking]
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.
moq - AutoData Theories with AutoFixture 使用手动假货
给定这个系统来测试:
而这个单元测试:
我应该如何将其转换为使用 AutoFixture.Xunit 和 AutoFixture.AutoMoq(同时仍使用手动伪造)?
在现实世界的测试中,手动伪造的界面和行为会更加复杂。请注意,我想将匿名变量(expectedResult 字符串)传递给手动伪造的构造函数。
c# - Structure Map Automocker Inject 是如何工作的?
我有包含 IEnumerable 参数的构造函数。当我尝试将具体对象注入 automocker 时,它没有被使用。
当我使用包含 IEnumerable 属性的包装类时,一切都按预期工作。
如何测试 TestClass1?
IEnumerable 参数
测试结果是:
Assert.AreEqual 失败。预期:<1>。实际:<0>。
包装类参数
测试结果是:
成功。
c# - 自动模拟 SUT
我已经阅读了 Mark Seeman关于自动模拟的文章,现在我正在根据该文章编写一个可重复使用的 Windsor 容器。
我对马克文章的实现(基本直接复制)
主要工作在AutoMoqResolver
课堂上完成。每当一个类依赖于接口时,这将提供一个模拟:
AutoMoqResolver
使用以下接口实现将其添加到容器中IWindsorInstaller
:
然后我的容器只需运行安装程序,它就可以为单元测试中的任何接口依赖项自动提供模拟:
极好的!
我已经对此进行了测试,并且很高兴地自动模拟了我的依赖项,因此我将其应用于一些真实的代码。这是当我意识到解决方案对我没有帮助的时候,因为我在测试课程时倾向于遵循的模式。我的具体问题是我希望能够自动模拟 SUT 本身,以验证 SUT 上的一种方法是否被另一个方法调用。
我需要测试的代码
我将通过一个例子来解释我自己。我正在开发 MVC 代码,并且使用以下通用模式支持不显眼的 AJAX:
我的测试模式
因此,为了验证该PerformTask()
方法是从DoSomethingWithAjax()
or调用的DoSomethingWithoutAjax()
,我定义了一个新TestableExampleController
类,如下所示:
然后我可以TestableExampleController
用作我的 SUT,以便通过以下测试:
我的问题
像这样重构这个测试以使用我的AutoMockContainer
类是行不通的:
测试未能创建实例,Mock<TestableExampleController>
因为它找不到无参数构造函数。
无法实例化类的代理:MyNamespace.TestableExampleController。找不到无参数构造函数。参数名称:constructorArguments
我提出的解决方案
理想情况下,我想实现一个包装类,它可以在容器中注册,以自动为任何组件提供模拟:
我希望能够编写以下通过的测试:
我无法完全理解如何实现这一点,并且我大部分时间都在摆弄新的 ISubDependencyResolver 实现,但我就是无法让它工作。
希望我的问题很清楚,答案实际上相对简单?
c# - AutoFixture.AutoMoq 为一个构造函数参数提供一个已知值
我刚刚开始在我的单元测试中使用AutoFixture.AutoMoq,我发现它对于创建我不关心特定值的对象非常有帮助。毕竟,匿名对象创建就是它的全部内容。
当我关心一个或多个构造函数参数时,我正在苦苦挣扎。采取ExampleComponent
以下措施:
我想编写一个测试,其中我提供了一个特定的值,someValue
但由AutoFixture.AutoMoqIService
自动创建。
我知道如何使用Freeze
我IFixture
来保持将被注入组件的已知值,但我不太清楚如何提供我自己的已知值。
这是我最想做的事情:
我知道我可以通过直接调用构造函数来做到这一点,但这将不再是匿名对象的创建。有没有办法像这样使用AutoFixture.AutoMock或者我需要将 DI 容器合并到我的测试中才能做我想做的事情?
编辑:
在我最初的问题中,我可能应该不那么抽象,所以这是我的具体情况。
我有一个ICache
具有泛型TryRead<T>
和Write<T>
方法的接口:
我正在实现一个CookieCache
whereITypeConverter
处理对象与字符串之间的转换,并lifespan
用于设置 cookie 的到期日期。
因此,在为 cookie 的到期日期编写测试时,我关心的是寿命,而不是转换器。
unit-testing - Automoq 文档
我开始使用 Automoq。我试图做这样的事情:
这运行 bu 失败。我的属性没有设置。我错过了 Automoq 的想法吗?什么是好的资源/教程?
c#-4.0 - 为什么这些模拟对象是相等的,尽管配置不同?
以下代码应模拟具有不同电子邮件属性的两个对象。但相反,我得到了两个具有相同电子邮件属性的对象。为什么?
unit-testing - Rhino Mocks 或 StructureMap AutoMocks 如何在相同/继承类中存根函数?
我正在尝试测试数据访问类。基本上,function1 是直接从 DataContext 中读取数据,而另一个 function2 是添加过滤器。function1 和 function2 可以在同一个类中或继承类。
如何存根 function1 的返回值并测试 function2?
示例代码我到此为止,但它不起作用。我曾尝试使用 Rhino Mocks 和 StructureMap Auto Mock,但在存根时仍然会出错。
任何帮助表示赞赏。非常感谢。
dependency-injection - 为什么带有 AutoMoqCustomization 的 Autofixture 在类被密封时停止抱怨缺少无参数构造函数?
当我在单元测试中直接使用Moq来模拟IBuilderFactory
和实例化BuilderService
自己时,我可以获得一个通过测试,该测试验证该Create()
方法IBuilderFactory
只被调用了一次。
但是,当我将Autofixture与AutoMoqCustomization一起使用时,冻结模拟IBuilderFactory
并用 实例化BuilderService
,fixture.Create<BuilderService>
我得到以下异常:
System.ArgumentException:无法实例化类的代理:OddBehaviorTests.CubeBuilder。找不到无参数构造函数。参数名称:constructorArguments
如果我进行CubeBuilder
密封(通过将其替换为由 调用的密封类SealedCubeBuilder
来表示IBuilderFactoryForSealedBuilder.Create()
,则使用带有 AutoMoqCustomization 的 AutoFixture 通过测试,不会引发异常。
我错过了什么吗?由于我直接使用 Moq 通过测试,我相信这与 Autofixture 和/或 AutoMoqCustomization 有关。这是期望的行为吗?如果是这样,为什么?
为了重现,我正在使用:
以下是说明该行为的四个测试:
以下是所需的类:
python - 自动模拟 Python?
我习惯于在 C# 中使用AutoFixture.AutoMoq,并想知道 Python 是否有类似的东西。我没有使用 django 或数据库,所以django-autofixture
不会帮助我。
我正在寻找的是可以减少我需要编写的代码,以使用存根/模拟设置所有相互关联的对象以进行测试。我正在使用 IoC 模式进行设计(但没有 DI 框架,因为 Python 并不真正需要它们)。
我正在使用鼻子和软糖。
c# - 使用 StructureMap AutoMocker 提高效率
我们目前正在使用 Rhino Mocks 在我们的 C#、ASP.Net MVC 项目中测试我们的代码,并且由于模拟所有存储库、服务等,一些测试变得非常冗长。
有没有人有任何估计,或者知道我可以在哪里找到关于使用 Structuremap Automocker 创建模拟和存根平均可以节省多少行代码的估计?