问题标签 [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 投票
1 回答
653 浏览

vb.net - FakeItEasy VB.NET 参数问题

好的,我正在尝试使用模拟框架自学测试,并且我在 VB.NET 中工作,我是 lambda 表达式的新手,我以前的所有应用程序都是在 2005 版或更早版本中编写的。我现在有 2010。所以我尝试了 Rhino.Mocks,但发现很难理解它,主要是因为它的语法较旧。因为,这些天似乎没有人在 VB.NET 中写博客,所以我一直在查看 C# 示例并试图弄清楚发生了什么。

所以我有一种情况,我将一个接口传递给一个类的构造函数并持有对该接口的引用。当在对象上调用方法并引发应该由实现接口的类处理的事件时。

我遇到了麻烦,所以我尝试在 C# 中创建一个简单的版本并重复 vb.net 中的步骤。

所以我的界面:

引发事件的类:

考试:

这通过了,到目前为止没有问题。

现在在 vb.net 中尝试同样的方法;相同的接口和广播类,只是在 vb.net 而不是 C# 中,最初是 hte 以下单元测试。

这失败并显示以下错误消息;“以下调用的断言失败:TestFakeItEasyVB.IBroadcastClient.MessageReceivedHandler(msg:) 预计至少找到一次,但在调用中找到它 #0 次:1: TestFakeItEasyVB.IBroadcastClient.MessageReceivedHandler(msg: "Yay!")"

有趣的是这样写;

也会失败并显示相同的错误消息,但是,此版本的测试通过了。

这种变化也在 C# 中通过,我的困惑是我做错了什么让测试忽略传递给伪造事件处理程序的参数?

0 投票
2 回答
1724 浏览

unit-testing - 来自 commonlibnet 的 FakeItEasy 和 FluentValidation 的假验证码

我正在使用来自 commonlibrary (http://commonlibrarynet.codeplex.com/) 的 Captcha 类。我的代码可以正常工作,但现在我正在尝试编写单元测试。

我的验证规则是:

在我的设置代码中,我尝试执行以下操作:

但我收到以下错误消息:

所以问题实际上是如何使用 FakeItEasy 伪造静态方法。

TIA,

大卫

0 投票
1 回答
415 浏览

vb.net - 在 VB.Net 中使用 FakeItEasy 引发事件以验证事件处理程序是否正确连接

我正在尝试测试接口和控制器之间的事件处理程序是否正确连接。该系统的设置如下例所示:

如何使用布尔参数引发事件,以便我可以测试事件处理程序中包含的每个代码路径。我对 Google 代码主页上显示的语法没有任何运气。

这是我到目前为止所拥有的:

0 投票
2 回答
2576 浏览

c# - 如何在 C# 中模拟班级成员?

我正在尝试使用 FakeItEasy 来模拟一个对象,该对象是我正在创建的 C# 类的成员。

FakeItEasy 文档表明您以类似于以下方式伪造对象:

也就是说,使用“var”关键字。

但是,在这种情况下,C# 编译器不喜欢在非本地上下文中使用var的事实。我收到此错误:

上下文关键字“var”只能出现在局部变量声明中

我不能模拟一个不是本地的对象吗?

0 投票
1 回答
912 浏览

unit-testing - 使用 FakeItEasy 伪造 nHibernate 会话

我想使用 FakeItEasy 将一个假的 nHibernate 会话注入我的存储库,然后返回一个在我的测试中预定义的对象列表。有没有人有这样做的经验?

这是示例测试:

这是实际 ProductionRepository 类中的调用:

提前感谢您的任何建议!

0 投票
2 回答
527 浏览

autofac - 有没有办法从 FakeItEasy 中的 System.Type 对象创建一个假的?

有没有办法从 FakeItEasy 中的 System.Type 对象创建一个假的?如同:

我尝试为 AutoFac 编写一个假容器,该容器会自动返回所有已解析类型的假容器。我查看了 FakeItEasy 的代码,所有支持它的方法都在内部类后面,但我发现接口 IFakeObjectContainer 看起来很有趣,但实现仍然需要注册我想要的对象。

0 投票
2 回答
1698 浏览

unit-testing - 使用 FakeItEasy 对嵌套实体框架成员进行单元测试

我们正在尝试对依赖于 Entity Framework 4.1 的代码进行单元测试。我看过几篇针对 POCO 实施单元测试的帖子,但我们希望保留默认的 EF 管道,以便我们可以轻松使用EF Caching Wrapper

FakeItEasy 似乎可以处理抽象出 EF 的问题,但我在断言发生的事情时遇到了问题。例如,我的模型中有这段代码(其中还有另一个Email部分类,它是 EF 数据库优先向导自动生成的代码):

然后在我用 FakeItEasy 进行的单元测试中:

我怎么能从我的单元测试中知道context.Emails.AddObject实际上确实被调用了?

谢谢!

0 投票
2 回答
1063 浏览

c# - 断言对同一模拟实例上的公共方法的调用

我有以下测试

问题是对DealDamage方法的调用没有Attack被注册,因为在方法内部,this不是攻击者,因此方法调用没有被拦截。realAttackerwrappedAttacker

我如何测试这个断言?这可以用 FakeItEasy 完成吗?不同的模拟框架是否允许我对此进行测试?

0 投票
2 回答
15411 浏览

c# - 在不使用魔术字符串的情况下将参数传递给 FakeItEasy-mock?

在过去的几年里,我一直在使用Moq来满足我的模拟需求,但是在查看了FakeItEasy之后,我想试一试。

我经常想测试是否使用正确的参数调用了一个方法,但我发现使用 FakeItEasy 没有令人满意的方法。

我有以下代码要测试:

我想编写一些测试来验证 _workflowInvoker.Invoke() 的输入。我的 TestInitialize 方法设置所需的资源并将输入字典作为本地字段 _wfInput 保存到 _workflowInvoker.Invoke()。

设置后,我有多个这样的测试:

我不喜欢 TestInitialize 中的魔术字符串“输入”来获取传递的参数(或幻数)。我可以在没有本地字段的情况下编写测试,如下所示:

但我发现本地字段的测试更具可读性。

有什么方法可以将输入保存为我的测试类中的字段,而不需要幻数或字符串?

我希望问题中的更新示例能说明我为什么要使用本地字段。如果我能找到一种可读的好方法,我非常愿意在没有本地字段的情况下编写测试。

0 投票
1 回答
880 浏览

rhino-mocks - Rhino 和 FakeItEasy 之间的行为差​​异

我们正在考虑将我们的模拟框架从 Rhino 切换到 FakeItEasy。主要原因是简单,在 FakeItEasy 中只有一种方法可以做事。Rhino 有记录/回放、AAA、存根、部分模拟、严格模拟、动态模拟等。

我正在使用 FakeItEasy 重写我们的一些测试,以确保它能够完成 Rhino 目前为我们所做的一切,我遇到了一些我无法解释的事情,希望有人能启发我。

在 Rhino 中,我有以下测试。代码已缩写。

附加此代码的单元测试运行良好并且测试通过。我使用 FakeItEasy 重写了它,如下所示。

现在,当我运行测试时它失败了,但这是因为 FakeItEasy 正在引发异常。

这看起来很奇怪,因为 Rhino 也有同样的限制。我们认为正在发生的事情是,虽然 AppSettings 在 ConfigurationManagerBase 上是虚拟的,但 indexer 属性却不是。我们通过将 FakeItEasy 测试更改为 read 来纠正问题。

我基本上只是想了解我是否对 FakeItEasy 做错了,或者 Rhino 是否在使用该索引器在幕后执行了一些“魔术”?