问题标签 [machine.fakes]

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 回答
724 浏览

c# - 如何告诉 Machine.Fake 满足给定类型的依赖关系

假设我有一个配置类似于:

有没有更好的方法来告诉 Machine.Fakes 不要伪造 IFileProcesser 并使用 FileProcesser 的实现?

0 投票
3 回答
1892 浏览

c# - How do I mock 'out' parameters with Machine.Fakes independently of the mock framework?

I've hit an impasse with Machine.Fakes. I cannot figure out how to mock an out parameter using only Machine.Fakes equipment. Because of a bug in RhinoMocks, I switched our mfakes adapter to FakeItEasy. As far as I can tell, any of the adapters should be interchangable.

The problem is that this caused the "out" tests to fail, things that looked like this no longer compile, because Arg was Rhino.Mocks.

#xA;

I tried using a "dummy" local variable, set to the same value the original Arg<T> param set it to, but this has caused my tests to fail -- it seems as though the value isn't being passed through! Arg<T> really had the solution, but I can't use it anymore, as it's part of Rhino.Mocks.

0 投票
3 回答
741 浏览

c# - Machine.Fakes 如何测试虚拟方法的实现?

鉴于我有一个控制器类:

}

使用测试工具:

此单元测试将失败,因为 Subject.ResourceParent() 将返回 null,因为 Machine.Fakes 已自动模拟此方法。作为临时解决方法,我刚刚从 ResourceParent 中删除了 virtual 关键字,以便能够测试我的代码。我认为必须有一个真正的解决方案让我告诉 Machine.Fakes 不要覆盖ResourceParent()

0 投票
1 回答
1749 浏览

c# - 使用 Machine.Fakes 和 WithSubject创建主题时如何告诉框架使用特定的构造函数参数值

我想告诉 Machine.Fakes 框架在创建主题时为构造函数参数使用特定值

被测对象具有以下构造函数

我创建了一个测试的存根,如下所示:

但我不确定如何告诉 Machine.Fakes 为Func mappingFunction参数使用特定值。

0 投票
1 回答
1285 浏览

mspec - 为什么这个 Machine.Fakes 参数匹配会抛出异常?

我正在使用Machine.Fakes.NSubstitute并且想要“伪造”一个返回值,这样如果输入参数与特定值匹配,则返回模拟对象,否则返回 null。

我尝试了以下方法:

但它会引发以下异常:

System.InvalidCastException:无法将“System.Linq.Expressions.NewExpression”类型的对象转换为“System.Linq.Expressions.ConstantExpression”类型。

我目前的解决方法是执行以下操作:

这有点臭。

0 投票
1 回答
294 浏览

machine.fakes - 如何使用 Machine.Fakes.Moq 来验证方法是否被调用?

我正在使用 Machine.Fakes.Moq 并且我想验证是否调用了接口的方法。验证它的正确方法是什么。我想验证是否使用特定类型的参数调用了该方法,比如说字符串。

谁能告诉我它的语法吗?

谢谢

0 投票
1 回答
256 浏览

unit-testing - 使用带有 RavenDB EmbeddableDocumentStore 的 Machine.Fakes 单元测试

我通常在我的 MSpec 中使用 Machine.Fakes 模拟 IDocumentSession,RavenDB 的人不喜欢这种做法。如何将 EmbeddableDocumentStore 与 Machine.Fakes 一起使用?

0 投票
2 回答
985 浏览

mspec - 如何使用 Machine.Fakes 确保构造函数不调用本地方法?

给定一个预期会抛出异常的构造函数:

我将如何使用 Machine.Fakes 和 Rhino(默认设置,我正在迁移到 Rhino)来模拟这个类,并测试它:

  1. 它抛出预期的异常
  2. 它不调用 Initialize()

使用 Moq,我可以模拟实际的 MyObject 类本身并在模拟上设置属性Callbase = true以使其像普通类一样工作。

然后,我可以验证是否引发了异常,并且没有使用以下方法调用该方法:

但我无法弄清楚如何使用带有 Fakes 的 MSpec 来模拟它:

我确实知道并Catch.Exception(...)在我的Because of行为中正常使用。但是这个用例似乎不适用于那个。

任何指针将不胜感激。

谢谢!

免责声明:现实世界的用例非常复杂,需要初始化大量对象,缓存的支持成员非常昂贵。上面的代码只是一个简化版本。

0 投票
2 回答
154 浏览

.net - 为什么 Machine.Specifications 建议使用未签名的二进制文件?

Machine.Specifications github 页面上,我可以下载已签名和未签名的二进制文件,建议使用未签名的二进制文件。

在我的 .net 项目中,所有程序集都应由密钥签名。这是外部要求。

我还使用 InternalsVisibleTo 属性为单元测试程序集提供对所有其他程序集的内部成员的访问。如果您在签名程序集上使用 InternalsVisibleTo 属性,则也应该对将访问内部的程序集进行签名。

所以我的单元测试程序集应该签名。这意味着我不能使用任何单元测试框架的未签名版本。

我在 Nuget 上找到了 Machine.Specifications 的签名版本,但我也想使用Machine.Fakes作为自动模拟容器并且找不到 Machine.Fakes 的签名版本。

所以我不能在我的项目中使用 Machine.Fakes。

我只是不明白,在我的情况下,我该如何遵循“推荐方式”?可能我应该添加主要程序集的条件编译 - 用于单元测试的未签名版本和用于发布的签名版本?

0 投票
2 回答
252 浏览

c# - Machine.Fakes "WithFakes 尚未初始化。您是从静态初始化程序调用它吗?" 错误

将 Machine.Fakes 从 1.0.1 更新到 1.7 版后,我收到“WithFakes 尚未初始化。您是从静态初始化程序调用它吗?” 错误/异常。

我正在像这样构建我的测试:

我在 SUT 中测试的每种方法都有一个类。

有人可以告诉我我做错了什么吗?