问题标签 [fakeiteasy]

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 投票
3 回答
1246 浏览

c# - 单元测试中的部分模拟/伪造

我有一个关于 FakeItEasy 的问题(或其他模拟对象,因为我相信它们非常相似)。以下是我的puesdocode:

现在,我将不得不为该类编写一些单元测试代码。是否可以在我真正使用 baseMethod() 测试 Checkservice() 时模拟 GetBoolean()?如果没有,我应该如何修改代码?

谢谢,凯尔

0 投票
5 回答
7188 浏览

c# - 如何在单元测试中将 FakeItEasy 与 HttpClient 一起使用?

鉴于以下代码,我试图弄清楚如何将 FakeItEasy 与 HttpClient 一起使用:

所以我不知道如何使用FakeItEasy,来伪造 HttpClient 的GetAsyncPostAsync方法。

生产代码不会通过 HttpClient,但单元测试会通过 FakeItEasy 制作的假实例。

例如。

更新:

我认为 FiE(和大多数模拟包)适用于接口或虚拟方法。所以对于这个问题,让我们假设 and 方法是虚拟的......GetAsyncPostAsync:)

0 投票
0 回答
876 浏览

entity-framework - 单元测试通用存储库

我对单元测试很陌生,并且在我的应用程序中对通用存储库进行单元测试时遇到了一些问题。我已经在我的 ASP.NET MVC 应用程序中实现了工作单元模式。我的课程如下所示:

我正在使用 NUnit 和 FakeItEasy 来编写我的单元测试。在我的设置函数中,我创建了一个带有假 PosContext 对象的 UnitIfWork 对象。然后我用几个 Shop 对象填充上下文。

当我测试 GenericRepository 的 Find 方法时,它工作正常。返回了正确的 Shop 对象,我可以断言它工作正常:

但是当我想测试 Get 方法是否返回存储库中的所有商店时,如果我不提供任何过滤器参数,我会得到一个空列表。我想不通为什么?

ShopController 如下所示:

你能帮我弄清楚为什么我从 Get 方法中得到一个空列表吗?

0 投票
4 回答
624 浏览

c# - 有默认构造函数时没有默认构造函数错误

编辑:将在 SO 上公开生产代码!希望没有人窃取我的秘密!

我有一个控制器类,用于使用 Modbus 协议通过 TCP 与设备通信。我使用 NModbus 库。

以下是控制器类实现的接口:

这是控制器类。

在与包含此类及其接口的库相同的解决方案中的 Tests 项目中创建的测试中,我没有收到以下错误。但是,在使用该库的不同解决方案中的项目中,我得到以下信息:

这是测试:

为什么 FakeItEasy 不认为类上有默认构造函数?

很抱歉,我发布了大量帖子,但有人要求我包含代码。

编辑:如果我new Controller()在该A.Fake<Controller>()行之前添加,则测试通过:

0 投票
1 回答
5224 浏览

unit-testing - FakeItEasy DbSet / IQueryable- 实体框架 6

我想知道是否有人对 FakeItEasy的这篇文章有类似的示例(原始帖子在这里。我一直在尝试找到正确的设置,但无法正确设置。我在网上找不到任何示例。我开始教我自己进行了单元测试,我决定使用 FakeItEasy。到目前为止,我所有的项目都使用实体框架并且不使用 Repository/UOW 模式,因为我认为 DbSet 和 DbContext 对于我的小型应用程序来说已经足够好了。我知道有优点/缺点EF和单元测试,但我仍然想弄清楚这一点。我很确定我的尝试已经完成(见下文),因为我得到的错误是

System.NotImplementedException:成员“IQueryable.Provider”尚未在“DbSet 1Proxy' which inherits from 'DbSet1”类型上实现。'DbSet`1' 的测试替身必须提供所使用的方法和属性的实现。

任何方向都会非常有帮助。谢谢你。

0 投票
2 回答
1251 浏览

c# - ASP.NET MVC FakeItEasy - 模拟会话在单元测试中不返回正确的值

我已经使用 FakeItEasy 模拟了 MVC 控制器中的会话对象,方法是:

如果您在控制器操作中访问会话对象,它将返回正确的值:

稍后会在控制器中出现问题,其中会话是通过这样的设置器使用相同的键设置的:

然后当使用密钥时,它返回错误的值

模拟会话不再返回我的模拟值,也不再返回新值,而是返回键(WTF?!)。我究竟做错了什么?当使用 setter 时,模拟对象实际上会发生什么?

0 投票
1 回答
1200 浏览

c# - 使用私有 ctor 和静态创建方法和私有 id 属性模拟一个类

我正在尝试使用 AutoFixture 来简化我的生活。

我如何模拟一个班级

  • 非公共构造函数和
  • 非公开身份和
  • 静态“创建”方法?

例子

我尝试过使用 Factory 和 SpecimenBuilder 的组合:

演示 C# 解决方案可在https://github.com/daptik/MockingStaticCreate获得

感谢任何指点,

帕特里克

0 投票
1 回答
5882 浏览

c# - 使用 FakeItEasy 伪造泛型方法而不指定类型

我想知道是否可以为所有可能的类型(或指定的子类型)伪造一个通用方法调用?

例如,假设我们有这个美妙的IBar界面。

我可以伪造对这个 IBar 的Foo调用的依赖,而不必指定 T 是任何特定类型吗?

谢谢!

0 投票
1 回答
2819 浏览

c# - 正在测试的方法调用 IQueryable.SingleOrDefault 时出错

我正在使用 Entity Framework 和 FakeItEasy 进行单元测试。

有许多单元测试方法,它们都可以 - DbSet 正在被嘲笑,一切都很好。特别是这个失败,因为具体的方法调用 IQueryable.SingleOrDefault,出现以下错误:

测试方法(改编):

PrepareAndGenerateFakeDbSet 方法(完整):

正在测试的方法(改编):

有任何想法吗?提前致谢!

0 投票
1 回答
237 浏览

c# - 在模拟存储库中模拟 .Single() 方法的返回值时遇到问题

场景:我正在学习如何进行单元测试。目前正在使用 nUnit 和 FakeItEasy 对 mvc 操作方法进行测试。如果传递了一个不存在的 id,我有一个测试来验证该方法是否会引发异常。action 方法调用 .Single() 的存储库包装器方法,如果未找到任何内容,它将抛出异常。这很好。

在我的测试中,我执行以下操作:

  • 使用 FakeItEasy 创建假的 IRepository
  • 创建测试数据
  • 配置 .Single() 包装器方法以从我的测试数据中获取数据

问题:我在测试这个时遇到问题。问题是,当传递一个无效的 id 时,会在假存储库的配置代码中引发异常,而不是在操作方法本身中引发异常。原因很明显。配置代码在执行操作方法之前运行,并且配置代码在测试数据上调用 .Single() ......(当然是故意的)不包含无效的 id。所以它会立即抛出异常,甚至永远不会进入 action 方法。我不确定的是如何解决这个问题。异常需要在 action 方法中抛出。我不知道如何以避免这个难题的方式配置返回值。

代码:
控制器代码


测试代码


假存储库代码