微软假框架提供的任何替代垫片功能?

sun*_*leo 13 microsoft-fakes

我想知道是否有任何替代lib到微软假框架提供的垫片功能,因为它只支持最终版本?

Jam*_*esF 6

据我所知,有三个框架可以模拟非虚拟方法和密封类,如Fakes'Shims.有

它们都是商业性的,因为它们使用的是Profiling API,它非常多毛且文档记录很差,所以对它们进行编码真的很痛苦.

而对于记录我完全是假货.人们正在处理的大多数代码都是遗留代码.实用程序员的重构规则之一是确保在任何重构之前都有单元测试覆盖以避免回归.这使得Fakes和类似的框架非常有用,特别是当遗留代码不是为测试能力编写的时候.


RB.*_*RB. 5

伪君子尚未更新工作与VS 2017年,但姿势不和的作品真的很好的东西,我需要它(基本匀场Environment.UserName,以及DateTime.Now和类似),并有一个非常漂亮的界面:

// Create shims. They only apply within this isolate block.
var dateTimeShim = Shim.Replace(() => DateTime.Now)
                       .With(() => new DateTime(2010, 1, 1));

var usernameShim = Shim.Replace(() => Environment.UserName)
                       .With(() => "john.wick");

// Shims are only active within an Isolate block - and you 
// have to pass all shims you want to be active.
PoseContext.Isolate(() =>
{
    // Run your test - shims are active at this point.
    RunTest();
}, dateTimeShim, usernameShim);
Run Code Online (Sandbox Code Playgroud)

编辑

我应该注意到,在进行相当基本的测试时,我遇到了很多错误 - 非常可怕的错误,例如“公共语言运行时检测到无效程序。”和“JIT 编译器遇到内部限制”。所以请注意空客。