问题标签 [microsoft-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 投票
5 回答
61647 浏览

unit-testing - 模拟框架与 MS Fakes 框架

对 NMock 与 VS 2011 Fakes Framework 等 Mock 框架的差异有点困惑。通过 MSDN,我了解到 Fakes 允许您像 RhinoMock 或 NMock 一样模拟您的依赖项,但是方法不同,Fakes 生成代码来实现此功能,但 Mocks 框架没有。那么我的理解正确吗?Fakes 只是另一个 Mock 框架吗

0 投票
1 回答
186 浏览

moles - 使用文件 licenses.licx 的痣和许可

我有痣和文件 licenses.licx 的问题。我在互联网上搜索,但没有找到有用的答案。

问题是,我们正在使用许可的第三方产品库,它需要存储在文件 licenses.licx 中的许可证密钥。我们将此产品库称为 Product.dll。

我们将此文件存储在项目的 Properties 文件夹中,我们在其中引用了许可的 Product.dll。我们称这个项目为 Proj1。

然后我们有 unittest 项目 (Proj1.UnitTest),我们在其中引用项目 Proj1 和库 Product.dll。然后我们为它们添加 moles 程序集,因此我们引用了 Proj1.Moles 和 Product.Moles。

如果我们对 Proj1 或 Product 没有属性 [HostType("Moles")] 的方法运行任何测试,则测试通过没有任何问题。

但是,如果我们需要修改任何方法,并使用属性 [HostType("Moles")] 运行测试方法,那么每次调用 Product 方法时都会显示许可证对话框。这使得我们的单元测试不再可能。

你能帮我解决这个问题吗?

我在 Pex 和 Moles 网页上读到,它们正在成为 MS VS 11 的一部分。

除了在 MS VS 11 中的集成之外,在开发或错误修复方面是否有任何其他进展?因为最新版本真的很旧 - 2010 年 11 月 1 日的 0.94.51023.0。

提前感谢您的回答。

问候

简。

0 投票
2 回答
471 浏览

microsoft-fakes - 模拟功能是否可用于 Microsoft Fakes?

随着 Visual Studio 11 中包含 Microsoft Fakes,我认为值得再次研究,因为我上次检查时发现 Moles 不够成熟。文档仍然很少,但我找不到任何对模拟的引用,即设置和验证对伪造对象的期望的能力。

有谁知道这当前是否包含(作为库中的一个功能)或将包含?

0 投票
3 回答
4524 浏览

unit-testing - 如何验证是否调用了 Microsoft Fakes(测试版)存根/垫片(如 Rhino Mocks 中的 AssertWasCalled)?

我在 Visual Studio 11 中使用 Microsoft Fakes 测试版。如何验证我的测试系统是否调用了依赖项的方法?

0 投票
4 回答
1364 浏览

c# - Ms Fakes 框架,NotSupportedException

为什么此代码会在运算符中抛出 ShimNotSupportedException?

0 投票
1 回答
27147 浏览

c# - 如何在 VS 2012 Professional RC 中添加假货程序集?

根据下面关于 VS 2012 和 Microsoft Fakes Test Framework 的两篇文章,我应该能够在我的测试项目的引用中右键单击一个程序集,然后选择“添加 Fakes 程序集”以在 Visual Studio 11 中创建一个新的 Microsoft Fakes 框架程序集/ 2012. 但是我没有在 VS 2012 RC Professional 中找到它应该在的上下文菜单项。我可能需要引用 Microsoft.QualityTools.Testing.Fakes 程序集,但在添加引用搜索中也找不到它。自测试版以来,所需的菜单是否发生了变化?我需要安装扩展程序吗?

如何在 VS 2012 Professional RC 中添加假货程序集?

参考文章:

0 投票
1 回答
5277 浏览

visual-studio-2010 - Microsoft Fakes 可以在 Visual Studio 2010 中使用吗?

我们有使用 Visual Studio 2010 专业版的开发人员和一些试用 Visual Studio 2012 的开发人员。两个版本之间的项目兼容性很好。

如果我们引入新的 Fakes Framework 进行单元测试,Visual Studio 项目是否仍与 2010 兼容?

0 投票
3 回答
5018 浏览

c# - MS VisualStudio 2012 中的 ShimNotSupportedException

我只是想熟悉 Visual Studio 2012 RC 中新的 Fakes 隔离框架,但我因此面临ShimNotSupportedExceptions.
在第一次尝试时,我尝试将委托连接到的每个单一 shim 方法ShimNotSupportedException在尝试运行/调试测试时都抛出了一个。

这是相应的堆栈跟踪:

GetFoo_ValidBar_ReturnsBaz 测试方法引发了异常:Microsoft.QualityTools.Testing.Fakes.Shims.ShimNotSupportedException: System.DateTime at Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InvokeEvent(T value, Action1 eh) at Microsoft.QualityTools。 Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.OnAttachedUnsupportedMethod(MethodBase 方法) 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.CheckInstrumentation(MethodBase 方法) 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.InternalAttachDetour(Object optionalReceiver, MethodBase方法,委托 detourDelegate) 在 Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationRuntime.AttachDetour(Object optionalReceiver,Microsoft.QualityTools.Testing.Testing.Fakes.Shims.ShimRuntime.SetShimMethod(Delegate optionalStub, Object optionalReceiver, MethodBase method) 在 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType) 的 MethodBase 方法,委托 detourDelegate) , Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes) at Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes)在 BazTests.cs 中的 GetFoo_ValidBar_ReturnsBaz() 处的 System.Fakes.ShimDateTime.set_NowGet(Func'1 value):第 48 行。MethodBase 方法)在 Microsoft.QualityTools.Testing.Fakes 的 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType, Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes)在 Microsoft.QualityTools.Testing.Fakes。 Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes) at System.Fakes.ShimDateTime.set_NowGet(Func'1 value) at GetFoo_ValidBar_ReturnsBaz() in BazTests.cs:第 48 行。MethodBase 方法)在 Microsoft.QualityTools.Testing.Fakes 的 Microsoft.QualityTools.Testing.Fakes.Shims.ShimRuntime.SetShim(Delegate optionalStub, Type receiverType, Object optionalReceiver, String name, ShimBinding flags, Type returnType, Type[] parameterTypes)在 Microsoft.QualityTools.Testing.Fakes。 Shims.ShimRuntime.SetShimPublicStatic(Delegate optionalStub, Type receiverType, String name, Type returnType, Type[] parameterTypes) at System.Fakes.ShimDateTime.set_NowGet(Func'1 value) at GetFoo_ValidBar_ReturnsBaz() in BazTests.cs:第 48 行。在 BazTests.cs 的 GetFoo_ValidBar_ReturnsBaz() 中的 System.Fakes.ShimDateTime.set_NowGet(Func'1 value) 处键入接收器类型、字符串名称、类型 returnType、Type[] parameterTypes):第 48 行。在 BazTests.cs 的 GetFoo_ValidBar_ReturnsBaz() 中的 System.Fakes.ShimDateTime.set_NowGet(Func'1 value) 处键入接收器类型、字符串名称、类型 returnType、Type[] parameterTypes):第 48 行。

在阅读了我在 MSDN 上找到的处理此问题的两个线程后,我按照他们的说明(关闭 CodeCoverage,删除 .testsettings 文件)对我不起作用!
尽管如此,我还是找到了解决此问题的方法:
首先从测试资源管理器运行所有测试(而不是直接在编码区域之外使用“MSTest 测试(单击以运行)”按钮),一切正常并且没有抛出异常。之后我什至可以调试测试并且分配给 shim 方法的工作与预期一样。
这也适用于我使用的所有以下垫片。
但是现在我在尝试实现 MS Enterprise Library 的伪造品以进行数据库访问时又遇到了同样的问题。

这是测试的样子:

前两个 shim 分配(ShimFoo 和 ShimQux)按预期工作。但是 ShimDatabaseFactory.CreateDatabaseString (这应该使 DatabaseFactory.CreateDatabase(string) 在尝试创建新数据库实例时返回一个存根数据库)再次引发 ShimNotSupportedException。我就是不知道为什么!
你知道这里出了什么问题吗?

我将不胜感激对此的任何意见。

谢谢,
本杰明

0 投票
2 回答
8227 浏览

c# - 如何使用 Microsoft Fakes Shim 隔离(绕行)类的构造函数?

是否有可能用 Microsoft Fakes 隔离/替换类的构造函数?

找到了 Mole(Fakes 的前身)的示例:http: //thecurlybrace.blogspot.co.at/2011/11/how-do-i-detour-mole-type-constructor.html

我尝试过这样的构造

但它说 get 访问器丢失。为了澄清,更换类似的东西会很好

像这样的静态输入

这样我就不必模拟 Read、ReadLine 等。

0 投票
3 回答
5286 浏览

visual-studio-2010 - 在 Visual Studio 2012 中编译 Moles 时出现错误“类型或命名空间 xxxx 不存在”

我正在尝试编译在 Visual Studio 2010 中开发的现有项目(目标 .NET4),现在正在测试迁移到 VS2012。

当我用 moles 编译现有项目时,我经常收到以下错误。

命名空间“System.Security.Claims”中不存在类型或命名空间名称“Claim”(您是否缺少程序集引用?) [C:\ProjectPath\Project.Tests.Unit\obj\Debug\Moles\m\ mgcsproj] C:\ProjectPath\Project.Tests.Unit\mgcs

显示此消息的各种类型的巨大列表。

有什么想法吗?