问题标签 [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.

0 投票
1 回答
1192 浏览

.net - 如何使用 Azure 认知搜索 SDK 模拟 SearchClient.SearchAsync?

我正在尝试对使用SearchClient.SearchAsync()方法的代码进行单元测试。我正在使用 AutoFixture.AutoMoq nuget 包。

这是我尝试过的:

问题出在参数.Returns(Task.FromResult(<<PROBLEM HERE>>))部分。它期望从该.SearchAsync()方法返回的具体对象。根据文档和自动完成,该方法返回Azure.Response一个抽象类。所以,我不能更新它。实际上,该方法返回一个后代类Azure.ValueResponse,它不是抽象的,而是 Azure SDK 内部的,因此也无法新建。

那么如何模拟 SearchClient.SearchAsync 呢?

PS 使用 Azure.Search.Documents,v11.1.1.0

0 投票
1 回答
835 浏览

c# - 将 AutoFixture 与 Moq 一起使用?

使用这种结构。

是否可以结合AutoFixtureMoq完成以下任务?

  1. 确保User.FirstName自动生成
  2. 确保User.LastName始终是“史密斯”(字面意思)
  3. 确保User.MiddleName未填充(默认)
  4. 确保 User.IsAdministrator() 返回True
  5. IsAdministrator()已调用验证。

我知道这看起来很简单。这是我尝试使用的AutoMoq.

但这显然是错误的。:( 我相信语法很简单。谢谢你的帮助。

My goal:创建一个具有填充属性和模拟方法的对象。

0 投票
0 回答
93 浏览

unit-testing - 如何模拟被测同一类中的方法?

我正在使用Moqv4.13 和C#. 我正在尝试MethodAMyClass : IMyInterface. MethodA调用了另一个接口 ( IAnother) 的方法,我已经设置了这些方法。这些似乎设置得很好。

MethodA也调用MethodB(also on IMyInterface) 和MethodC(public, but not on IMyInterface) in MyClass

我已经设置,MethodB但在测试时,似乎MethodB调用了实际的代码。

至于MethodC,我不知道如何设置。

0 投票
1 回答
324 浏览

c# - Moq + Autofixture:对依赖属性使用设置会清除整个模拟对象

我正在使用起订量和 AutoFixture。

给定以下接口:

我正在执行这样的测试:

第一个测试通过,第二个测试失败:Expected obj.Object.Int2.Prop2 not to be <null> or empty, but found <null>. 似乎在它的依赖属性之一上使用 Setup 时Int2会清除整个Int2对象(将所有属性设置为默认值)。这是为什么?如何避免?

obj.Object创建后看起来像这样:

设置前

但执行后Setup它看起来像这样(Prop2is null):

设置后

有趣的是,当我Int2在创建属性后访问它时,它工作正常。所以这个测试通过了(变量int2不在任何地方使用):

有任何想法吗?

这也是一个 .csproj 文件供参考:

0 投票
1 回答
245 浏览

c# - 如何在模拟上设置方法以默认返回 null?

我正在使用 AutoFixture 和 AutoMoq 在这样的单元测试中模拟我的依赖项

我希望该行var myObject = myService.Object.GetMyObject();返回null,但它返回一个Mock<MyObject>值。我知道我可以myService.Setup(e => e.GetMyObject()).Returns((MyObject)null);明确告诉它返回 null,但是我在整个测试过程中调用了许多类似的方法,我希望它们默认返回 null,而无需我显式调用Setup它们。

null有没有办法将夹具设置为默认情况下模拟返回的所有方法?

0 投票
1 回答
254 浏览

c# - 带有 AutoMoq 的 AutoFixture 在自定义后始终返回相同的实例

我有以下代码来设置来自模拟客户端的一些响应(代码的某些部分被省略了):

我使用模拟出来的方法来获取一个新实例,但我总是得到第一个创建ResponseObject的具有相同的实例Id

不幸的是,关于这个主题的文档“相当”空。

每次打电话时我应该改变什么来获得一个新的实例?

0 投票
1 回答
94 浏览

c# - 起订量,方法 HttpClient.SendAsync 是公开的。怎么修?

我收到错误消息:

System.ArgumentException:方法 HttpClient.SendAsync 是公共的。改用强类型的 Expect 重载: mock.Setup(x => x.SendAsync());

在尝试运行以下代码时:

我在这里可能缺少什么?

0 投票
0 回答
54 浏览

c# - 如何在使用 AutoMock XNnit 模拟受保护的方法时注入依赖?

在下面的代码片段中,我试图模拟受保护方法的响应并测试调用受保护方法的公共方法的响应。受保护方法调用外部 API,因此我想模拟响应以测试调用受保护方法的公共方法。

当我尝试注入对公共方法使用的类的依赖项时,就会出现问题。它总是转到默认构造函数,忽略我传递的依赖对象。请让我知道我在哪里错过了更改。注意:我添加了默认构造函数只是为了理解流程。我不会在真正的实现中使用它。

测试方法

主班

0 投票
1 回答
44 浏览

c# - AutoFixture AutoMoq 部分覆盖类构造函数

我正在使用 AutoFixture AutoMoq,它极大地简化了类中使用的所有接口的模拟并对其进行初始化。

虽然我注意到构造函数代码被部分覆盖了,但我们可以修改AutoMoqDataAttribute构造函数以使其ArgumentNullException也被覆盖吗?

在此处输入图像描述

AutoMoqData 属性类,

服务类代码,

0 投票
0 回答
17 浏览

c# - 将内联数据与 Automoq 和 Autofixture 一起使用时单元测试未运行

我在现有项目上创建了一些单元测试。我正在使用 AutoMoq 将数据注入到一些测试中。运行测试时,它抱怨递归错误。我使用以下代码解决了错误:

解决递归错误后,测试将无法运行。调试输出一直说线程已退出。然后我创建了一些示例类来测试我的设置并且它们都运行,除了现有的项目类测试。

我正在编写测试的一个类的示例是这样的:

上述类的示例测试是这样的:

我打算发送多个内联数据,我可以在其中设置一些类属性的值来测试我正在寻找的行为。

有人可以告诉我可能出了什么问题。

谢谢你。