问题标签 [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.
mocking - 生成的服务模拟:除了 RhinoMocks 之外的一切都失败了?
请参阅此代码:
请注意,这DoSomething
是从 NO 接口继承的自动生成类中的非虚拟方法调用。因此,根据常识,它不应该起作用。但确实如此。
问题是它是唯一可以做到这一点的(非商业)框架:
- Rhino.Mocks 有效,验证也有效
- FakeItEasy 说它没有找到默认构造函数(可能只是错误的异常消息):
No default constructor was found on the type SomeNamespace.TicketStoreService
- 起订量给出了一些理智和可以理解的东西:
Invalid setup on a non-virtual (overridable in VB) member: service=> service.DoSomething
- Nsubstitute 给消息
System.NotSupportedException: Cannot serialize member System.ComponentModel.Component.Site of type System.ComponentModel.ISite because it is an interface.
我真的很想知道框架在这里发生了什么,除了起订量。“花哨的新”框架似乎也有一个初步的性能命中,可能准备了一些类型缓存和序列化的东西,而 RhinoMocks 不知何故设法创建了一个非常“苗条”的模拟而没有递归。我不得不承认我不太喜欢 RhinoMocks,但它在这里闪耀……不幸的是。
那么,有没有办法让它与更新的(非商业的!)模拟框架一起工作,或者以某种方式从 Rhino.Mocks 中得到一个理智的错误消息(描述我实际使用的 6 个参数中的哪一个是不同的) ? 为什么 Rhino.Mocks 能做到这一点,当每个 Mocking 框架都明确表示它只能在给定具体类时使用虚拟方法时?
*我们不要通过讨论替代方法(例如 Extract&Override 或运行时代理 Mocking 框架(例如 JustMock/TypeMock/Moles)或新的 Fakes 框架)来破坏讨论,我知道这些,但由于本主题之外的原因,这不是理想的解决方案。
c# - FakeItEasy 是否支持 Partial Mocks 的想法?
与关于 NSubstitute 的这个问题类似,我想知道是否能够使用FakeItEasy库实现部分模拟。
FakeItEasy 似乎具有比 moq 更好的整体语法(就像前者处理将参数传递给伪造类的构造函数的强类型方式)。我正在考虑切换到 FakeItEasy,但我确实需要部分模拟支持。
c# - 如何模拟从另一个模拟作为属性返回的接口?
我有以下接口:
我有一个使用 IManufacturing 并调用 GetSpecs() 的类,如下所示:
我将我的模拟设置为:
运行测试时,我只在输出中看到“JobAPI called”字符串。因此,GetSpecs() 不会被嘲笑,实际上调用者会抛出,因为它期望一个规范列表,而它收到一个空字符串......
这里的罪魁祸首可能是什么?
谢谢。
fakeiteasy - 如何使用 FakeItEasy 伪造代表
当我尝试伪造委托类型时,我得到 System.InvalidCastException
我怎么伪造代表?
fakeiteasy - 如何验证是否使用特定类型的参数调用了方法
我需要验证是否使用特定类型的对象调用了方法
这是我要测试它被调用的方法的接口:
考试:
因为player1.Send
我得到了许多不同对象的多次调用InvalidCastException
有人知道如何正确地做到这一点吗?
c# - 使用 FakeItEasy 进行伪造的方法调用引发事件?
我正在尝试按照以下方式做一些事情:
这fakeTimer
是一个假的ITimer
,每个这个答案的包装接口。
显然这是行不通的,因为我不能在Expersion Tree 中进行分配。
我实际上想要实现的是Start
在调用该方法时模拟引发计时器事件。这样我就可以断言Start
确实发生了调用。
任何(替代)想法?
编辑我是个白痴,错在我自己!我不小心添加了一个额外的A.CallTo
,我不应该添加的。我不会删除这个问题,而是保留它以授予Patrik Hägne应有的声誉 :)
c# - 创建假 DbDataAdapter 会引发 FakeItEasy.Core.FakeCreationException
我在 Visual Studio 2010 中设置了一个简单的测试项目。对于单元测试,我使用 nunit 2.6.1 并模拟我通过 NuGet 安装的 FakeItEasy 1.7.4582.63。
我尝试使用以下代码伪造 DbDataAdapter:
当我使用 .NET framework 3.5 运行测试时,一切正常并且 test1 将通过。但是,当我将框架版本设置为 .NET 4.0 时,出现以下异常:
任何如何使事情在 .NET 4.0 中工作的想法都值得赞赏!
再见,约尔格
c# - C# FakeItEasy 已被覆盖的假方法
我在伪造我的班级时遇到问题:
A类有一个方法:
B 类扩展 A 类并覆盖该方法:
我需要模拟 B 类并测试该method
功能。问题是我需要避免调用该base.method(argument)
函数。我只需要测试我的方法实现,并模拟该函数以返回一个 int。
我怎样才能用 FakeItEasy 做到这一点?还是其他模拟框架?
更新
问题解决:
制作功能:
并在我的 B 类“方法”函数中执行它。比模拟 MethodCaller 函数
visual-studio - 使用 Fake.InitializeFixture 时的警告
我正在使用 Fake.InitializeFixture 像这样:
运行测试时它工作正常,但问题是 Visual Studio 给了我这些警告:
警告 27 字段 '...._someDependency' 从未分配给,并且始终具有其默认值 null
我希望在编译时有零警告。有没有办法摆脱这些?
c# - 在同一个对象上调用两次时,MustHaveHappened 失败
给定以下被测类(以及相关的 DTO 类和接口):
这个测试方法(它试图验证 IBar.Test() 被调用了两次:一次是 Num = 1,一次是 Num = 2):
第一个“MustHaveHappened”调用失败。我发现这是因为两次调用 IBar.Test() 使用的 DTO 是同一个实例。如果我将代码更改为使用两个不同的 DTO 调用 IBar.Test(),它会按预期工作。
我的问题是:这是 FakeItEasy 中的错误还是我做错了什么?