dotnet核心的无约束隔离框架(模拟)框架



我正在研究一个dotnet核心项目,试图在我的xunit.net测试中模拟某些第三方类。我要伪造的课程不是通过诸如MOQ或Nsubstitute之类的约束框架来模拟的。因此,我需要一个无约束的框架来做到这一点。

说我想在我的 .net core 测试项目中伪造DateTime.now。

在.NET 4.5中,我们有 msfakes (摩尔),Smocks等。它们都没有支持Dotnet Core框架。垫片还没有移植到dotnet core。

任何人都知道任何隔离框架或技术,目前将实现我的.NET核心目标?

您可以尝试另一种方式:用自己的接口和包装类别包裹那些第三方Libs。然后使用实现该接口的虚拟对象。

诸如dateTime.now之类的静态属性变得更加复杂。但是它的工作类似:使用Now属性定义ITimeProvider接口。添加带有public DateTime Now => DateTime.Now;DateTimeWrapper : ITimeProvider,并为方便起见,但不需要 - 围绕它的静态类,例如

static class MyClock 
{ 
    static ITimeProvider _Instance; 
    static void SetInstanceForTesting(ITimeProvider instance) 
    { _Instance = instance; }
    static DateTime Now => _Instance.Now; 
}

另外,您可以将ITimeProvider实例注入需要它的对象。

一个有些晚回复,但是对于其他人照顾同样的功能,我会推荐开源git项目prig:https://github.com/urasandesu/prig,假静态方法(它们甚至具有伪造和隔离dateTime的示例。Div>

姿势是一个选择。它是免费的记忆https://github.com/tonerdo/pose

最新更新