问题标签 [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.
.net - Microsoft 模拟和模拟 SqlConnection 以进行集成测试
我有各种相互通信的 Web 服务,有时会进行数据库调用,有些会与消息队列通信,但我希望能够在不实际调用数据库的情况下测试彼此交互的服务。
有没有一种方法可以让我执行集成测试,而无需实际触及系统的外围,即数据库和消息队列。
我们的 Web 服务和数据库在编写时没有考虑 DI 或可测试性,因此在服务中创建虚假实现并不是一个真正的选择。我已经看到了 Microsoft Mocks 库,它创建了伪造的程序集版本,看起来很有希望。
有没有办法使用微软的假货来实现这一点?我们能否以某种方式让服务调用虚假的 SqlConnection 并模拟数据库调用?
c# - 如何使用 Microsoft Fakes 获取基类的垫片?
如何在上述代码示例中设置“名称”?
c# - Microsoft Fakes x64 而不是 x86 和 v4.5
我正在使用 Microsoft Fakes 测试框架。由于我无法更改的“遗留”代码,我需要使用 shim/moles 方法,因此没有太多办法。它是来自没有源代码的供应商的代码,它是在没有考虑测试的情况下编写的。所以我坚持使用 3 种可能的框架,TypeMock(昂贵)、Telerik 的 JustMock(昂贵)或 Microsoft 的 Fakes。因为我们已经有了 VS Ultimate,所以我们选择了假货。由于大多数人认为他们需要建议以某种方式重写或修改代码以支持使用接口和/或依赖注入,我会提前告诉你,这不是一个选择。
我遇到的问题之一是我试图伪造的库很大,需要使用 64 位版本的 fakes.exe 而不是 32 位 (fakes.x86.exe),它会运行到32 位应用程序的内存限制。
第二个问题是我需要使用 v4.5 框架编译 fakes 库。虽然没有记录,但可以通过命令行来实现。原因是在 v4.5 中,他们在 System.Collections.Generic 中添加了 IReadOnly* 接口,并且库使用了它们。使用 v4 编译时,会抛出一个错误,指出未找到类型,如预期的那样。
问题是,Visual Studio 总是使用 x86 版本和 v4.0 框架,我找不到覆盖它的方法。有人知道如何让它使用 64 位和 v4.5 框架吗?我目前的想法是不使用visual studio的内置东西,只使用命令行并手动引用文件。然后在每次更新 dll 时,我们将手动重新创建它并更新引用。该文件不会经常更新,因此这是可能的。
我用来手动生成 fakes 库的命令行(有人可能会觉得这很有用)是:
帮助命令仅显示 v2、v3.5 和 v4 是 tfv 的可能选项,但只是为了踢我尝试了 v4.5。
我尝试将应用程序上的架构强制为 x64 而不是任何 cpu,它运行的 fakes.exe 没有任何变化。在 .csproj 文件中查看测试,没有变化。查看 fakes.exe 的 .csproj 文件,它说使用框架的 v4,在 Visual Studio 中打开,更改为 v4.5,编译正常。使用 fakes 命令行,编译良好。项目中的.fakes文件中有一个属性允许定义编译器版本,但是设置为v4.5还是不行。我假设 Visual Studio 中从 v4 到 v4.5 的版本更改也更改了程序集引用。如果我能找到它,我的下一个尝试是尝试更改模板项目。
c# - 使用 Microsoft Fake Framework MVC4 对 WebMatrix.WebData 进行单元测试
如果没有以下错误消息,我无法使用新的 Microsoft Fake Framework 测试来自 AccountController 的任何注销、登录、注册操作:System.Security.VerificationException:操作可能会破坏运行时的稳定性。
单元测试非常简单:
还可以找到这个:http ://social.msdn.microsoft.com/Forums/en-US/vsunittest/thread/f84962ea-a9b2-4e0d-873b-e3cf8cfb37e2谈论相同的错误但没有答案。
谢谢!
unit-testing - 在大量静态助手下单元测试数据库存储库类
我开始处理部分完成的 MVC 网络项目和我现在的任务——通过单元测试来覆盖代码。项目具有数据库存储和包含 CRUD 操作的非静态存储库类。为了测试这些 CRUD 操作,我需要使用 FakeRepository 模拟真实的 Repository 类,所以我创建了 IRepository 并使用 IoC 注入它......
但问题是该项目还有很多静态类,其中包含很多静态方法(Helper),它们扩展了基本的 CRUD 操作,并且应用程序中的所有控制器都与这些静态助手一起工作,这些静态助手在内部创建了 Repository 类......
试图修改所有静态方法以从控制器传递 IRepository,但是基于其他静态助手的助手太多等等......它不起作用!我没有时间重写所有这些混乱......
所以我需要并建议我如何测试所有这些助手,但是使用假的 IRepository 实例?
unit-testing - 如何使用 MS Fakes 为索引属性创建存根
我有一个需要模拟的接口,它的索引器属性部分看起来像这样。
我想模拟接口,以便上面的 name 和 index 的某些值返回我提供的值。如何使用 Microsoft Fakes Framework 实现这一目标?
c# - 团结+拦截+假货=大火球
我无法让 Unity 与新的 Fakes 框架(以前的 pex 和 moles)配合得很好
当我尝试创建统一拦截库的伪造品时,它导致我的单元测试在调试时运行良好,但会中断
InvalidProgramException - 公共语言运行时检测到无效程序。
问题是为什么?为什么调试与发布的行为不同?单元测试在调试时通过,但在我选择运行它时会因上述异常而中断。
unit-testing - Microsoft Fakes 生成器无法加载 PCL .dll
为了支持在 Windows Store MVVM 应用程序中进行测试,我将 Models 和 ViewModels 拆分为单独的 PCL,仅针对 Windows Store 和 .NET 4.5。我有一个 .NET 4.5 单元测试项目,它引用了 Model/ViewModel PCL 并让它生成该 .dll 的假程序集
这一切都很好,直到我尝试构建项目,此时单元测试库无法在输出中构建:
如果我从命令行对项目手动运行 fakes 生成器,它会成功。
我见过一些有不同问题的人在构建中生成假货,也可以通过命令行来完成,但失败不同。我可以直接引用 fakes .dll 而不是在构建中生成它,并确保每次项目更改时我都手动生成它,但这对我来说似乎是最后的手段。
silverlight - MS Fakes - 外部别名未在 /reference 选项中指定
我有一个 silverlight 解决方案,我正在尝试为 System.Windows.Controls.Data.DataForm.Toolkit 创建一个假货程序集(以使用 DataForm)。
添加 fakes 程序集后,出现以下构建错误:
错误 6 外部别名 'swd' 未在 /reference 选项中指定 [C:\Dev\Temp\SLTest1\Controls.Tests\obj\Debug\Fakes\swcddft\f.csproj] C:\Dev\Temp\SLTest1 \Controls.Tests\f.cs 16 1 控制.Tests
看起来 .csproj 在每次构建时都会重新生成,所以我无法修改项目文件。如何指定参考?有任何想法吗?
c# - Does Microsoft Fakes support abstract methods on a shim?
I have a class setup in the following manner:
What I want to do is set the WhatIWantToShim on the ShimFooClass like so:
I can set RandomMethod just fine,
However, it appears that the generated ShimFooClass does not create the WhatIWantToShim property on the AllInstances property of the ShimFooClass.
I've looked at http://msdn.microsoft.com/en-us/library/hh549176.aspx#bkmk_shim_basics but I don't see anything there about abstract methods. The only thing I see referenced that is not supported is finalizers. Anybody know what is going on here and if this scenario is supported?