问题标签 [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.
nunit - AutoMoqCustomization 抛出“无法加载文件或程序集......”异常
有人知道为什么当我调用以下代码时会发生此异常:
我更新了所有 NuGet 包:
- 起订量 - 4.8.3
- AutoFixture.AutoMoq 4.4.0
测试类 ....
AutoFixture.ObjectCreationExceptionWithPath :AutoFixture 无法从 AutoFixture.Kernel.MultipleRequest 创建实例,因为创建意外失败并出现异常。请参阅内部异常以调查失败的根本原因。
请求路径:
内部异常消息:System.IO.FileLoadException:无法加载文件或程序集 'Moq,Version=4.1.1308.2120,Culture=neutral,PublicKeyToken=69f491c39445e920' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
----> System.IO.FileLoadException:无法加载文件或程序集'Moq,版本=4.1.1308.2120,Culture=neutral,PublicKeyToken=69f491c39445e920'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)在 AutoFixture.Kernel.RecursionGuard.Create(对象请求,ISpecimenContext 上下文)的 AutoFixture.BehaviorRoot.Create(对象请求,ISpecimenContext 上下文)的 AutoFixture.Kernel.TerminatingWithPathSpecimenBuilder.Create(对象请求,ISpecimenContext 上下文)在 AutoFixture.Fixture.Create(Object request, ISpecimenContext context)
在 AutoFixture.Kernel.SpecimenContext.Resolve(Object request) 在 AutoFixture.SpecimenFactory.CreateMany[T](ISpecimenContext context)
AutoFixture.SpecimenFactory.CreateMany[T](ISpecimenBuilder builder) at Test.Test.DataImport2.ServiceTest.SetupCommonMocks() in C:\Development\DataImport2\ServiceTest.cs:line 42 at Test.Test.DataImport2.ServiceTest() in C:\Development\DataImport2\ServiceTest.cs:line 84 --FileLoadException at AutoFixture.AutoMoq.MockPostprocessor.Create(Object request, ISpecimenContext context) at AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at AutoFixture.CustomizationNode .Create(Object request, ISpecimenContext context) at AutoFixture.Kernel.CompositeSpecimenBuilder.Create(Object request, ISpecimenContext context) at AutoFixture.Kernel.TerminatingWithPathSpecimenBuilder.Create(Object request, ISpecimenContext context)
我尝试过了:
- 更新 Nuget 包(卸载/重新安装)
- 清洁项目
- 重建项目
- 重启骑士
没有任何效果
c# - AutoFixture 深度冻结对象
我有一堂课
我在这样的测试中使用它
我想知道是否有办法将GetDashboardStatisticsResult
它的属性冻结在一起?
所以最后我们有三种类型的freeze-GetDashboardStatisticsResult
和?GetPublicationStatisticsResult
GetSwitchboardStatisticsResult
moq - AutoFixture/AutoMoq:无法创建实例(`BadImageFormatException`)
以下是我目前遇到的问题的一个最小示例:
当我运行第一个测试时,我得到以下异常:
第二次测试成功。
我希望能够使用 AutoFixture 创建一个类的实例,它将 aWebSocket
作为构造函数参数,而无需先注入一个模拟对象(最终,这样我就可以使用一个AutoMoqData
属性,并摆脱一些样板文件) . 我在这里有任何误用或误解,还是将其作为 GitHub 问题更好?在此期间,我能做些什么来解决这个问题吗?
moq - 在为自动模拟设置自定义 AutoDataAttribute 时,告诉 AutoFixture 忽略所有递归结构的正确语法是什么?
我让 xUnit/Moq/AutoFixture 成功地协同工作,以便通过测试方法输入参数自动模拟对象。我创建了一个自定义[AutoMoqData]
属性,我在每个测试中都使用它。这是属性的代码:
这可行,但我收到以下编译警告:warning CS0618: 'AutoDataAttribute.Fixture' is obsolete: 'Fixture is created lazily for the performance efficiency, so this property is deprecated as it activates the fixture immediately. If you need to customize the fixture, do that in the factory method passed to the constructor.'
我已经通过用一个包围它来消除警告#pragma
:
但是,我想正确设置它,而不必假装警告不存在。问题是,我无法确定#pragma
.
有任何想法吗?
c# - 使用 AutoFixture/AutoMoq 为深度嵌套的类创建 Mock?
我想编写一个单元测试来覆盖对象图中相当深的一些只读属性。我的意思是这样的方法:
其中每个 ClassN 实现一个接口 IClassN 并且每个属性都是只读的。所以一个示例界面将是:
I类A
实现看起来像:
A类
我想尽可能少地覆盖classA.ClassB.ClassC.ClassD.Items[0].Name返回的值。我可以创建一个 Mock 并有一个 .Setup 来返回一个 IClassB 并仅使用 Moq 就可以上整个链。但如果可能的话,我想避免这种情况。
我尝试了很多不同的东西,但都没有运气。
尝试#1
我以为我可以使用创建链fixture.Build()
显然我已经离开了一些层,但这没关系。这失败了,因为属性是只读的。
尝试#2
接下来我想我可以“冻结”一个特定的实例,并且每当夹具创建一个对象时,如果它看到了那种类型的东西,它就会使用它。我以为我正在遵循此处给出的示例: https ://blog.ploeh.dk/2010/03/17/AutoFixtureFreeze/
它显示了这样的代码:var expectedName = fixture.Freeze("Name");
基于此,我尝试做这样的事情:
可悲的是,这甚至不会编译。Freeze 方法需要一些 IItem[] 类型的 Composer 类的 Func,但我无法弄清楚如何做到这一点。如果我删除类型,类似于我得到的示例代码
这也无法编译。
尝试#3
与尝试 #2 非常相似 - 只有这个才能编译。我认为只要夹具需要一个 IItem[] 数组,它就会使用我设置的那个。但是当我打电话
这种行为不是我所希望的。attempt3.ClassB.ClassC.ClassD.Items 不包含我的模拟项目。
TL;DR - 我怎样才能Item[0].Name
用最少的代码/努力覆盖返回的值?
unit-testing - 带 xUnit 的 Moq 和 AutoMoq (AutoFixture) 的依赖注入
我写这篇文章是因为我自己尝试了一段时间,但没有运气。无论出于何种原因,我能找到的每个示例似乎都表明这是开箱即用的,但每当我尝试做同样的事情时,我总是会出错。基本上,我有一个控制器,它有两个通过注入的属性。DI,比方说
在我使用 xUnit、Moq 和 AutoFixture 的测试中,我试图避免手动实例化依赖项B
和C
:
有了上面的内容,我在NotImplementedException
运行测试时得到了一个结果,它不会告诉我到底什么没有被实现,所以我无法知道问题是什么。我一定在文档中遗漏了一些东西。我想使用 AutoFixture 使我的测试更持久,但到目前为止,尝试使用它一直很痛苦。我真的不想为了运行测试而手动模拟/存根我的整个应用程序。理想情况下,我希望使用 AutoFixture 文档中显示的语法,您将测试相关的实例放在测试的参数中,它们是为您创建的,但我没有任何运气,比如......
谢谢阅读 (:
sql - 尝试对 sqlfunction 进行单元测试时出错:无法验证表达式,调用 0 次
我正在尝试对我的应用程序的 sql 函数进行单元测试,但是当我尝试验证该方法仅被调用一次时,它会给出一个错误,指出根本没有调用该方法。我正在使用 moq 来模拟我的不同上下文和界面。该方法位于“appointmentcontextsql”中。
试图改变模拟的模拟,但后来它无法转换为不同的类型。
测试:
测试方法:
预计单元测试会通过,因为我只是想看看该方法是否被正确调用,但 mock.time 方法告诉我它被调用了 0 次。
c# - 尝试还原软件包时出错
我已经下载了我正在关注的教程的应用程序。截至今天在 Visual Studio 2017 CE + 所有更新中打开它。
还有其他依赖项,但我想如果上述方法可行,我可以遵循相同的解决方案。
我查看了http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html并尝试了“旧”和“新”方式,但要么我没有选项或它没有工作。
当我管理 Nuget 项目时,我有几个带有“此源中不可用”的包我唯一的选择是卸载。
我可以看到一个栏要求我单击我所做的恢复和同样的问题。
错误列表显示
项目服务的 NuGet 包还原失败:找不到包“NUnit”的版本“3.0.1”。C:\Program Files (x86)\Microsoft SDKs\NuGetPackages:在源“C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\”上找不到包“NUnit.3.0.1”。. 有关详细的警告和错误,请参阅错误列表窗口。
查看上面的路径,我不知道我是否需要安装一些 SDK 才能使其正常工作,或者我是否缺少一个简单的步骤?本教程没有说明要安装任何 SDK,但是 SDK 的大小可能很大,所以如果需要,那么我不确定我需要哪个 SDK?
Install-Package AutoMoq -Version 1.6.2
编辑:使用Install-Package手动安装:
c# - 无法从 System.Reflection.TypeInfo 创建实例
我们正在尝试为我们的 ASP.Net Core API 控制器创建一个简单的单元测试。我们将 autofixture 与 autoMoq、XUnit2 和 shoudly 一起使用。我们如何模拟 TypeInfo 的创建?还是有更好的方法?
我们按照这篇文章解决了以下初始错误:
AutoFixture.ObjectCreationException :AutoFixture 无法从 Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary 创建实例,因为创建意外失败并出现异常。请参阅内部异常以调查失败的根本原因。
这会引发以下错误:
AutoFixture.ObjectCreationExceptionWithPath AutoFixture 无法从 System.Reflection.TypeInfo 创建实例,因为创建意外失败并出现异常。请参阅内部异常以调查失败的根本原因。...内部异常消息:Castle.DynamicProxy.InvalidProxyConstructorArgumentsException:无法实例化类的代理:System.Reflection.TypeInfo。找不到无参数构造函数。
编辑 经过进一步测试,当我们停止从类 Microsoft.AspNetCore.Mvc.Controller派生时,错误消失了。
编辑 2 我们目前的解决方法是不使用 AutoFixture/AutoMoq:
c# - 模拟方法不传递正确的值
我试图了解在 Xunit 中如何使用 AutoFixture 进行模拟。我创建了 Service 和 Repository 类及其接口。模拟方法应该传递与默认值不同的值。
模拟方法总是传递默认值而不是我在“.Returns()”中写的值。我试过 AutoConfiguredMoqCustomization 但它提供了完全随机的值,我无法取回。
存储库.cs
服务.cs
测试
如您所见,Repository 中的默认值是 999,我期望 repositoryMock 为 1,但结果是“999”而不是“1”。
哦,我明白了我的问题。当我使用自动起订量测试服务声明参数时,必须在所有模拟存储库之后
测试
属性