![]() |
1
-2
首先让我告诉你,你不能嘲笑DateTime。“Now”是一个静态属性。模拟的主要思想是解耦依赖关系,并且应该将依赖关系注入相应的类来模拟它。这意味着您必须实现一个到依赖类的接口,并且该接口应该注入到使用依赖类的类中。对于单元测试,模拟相同的接口。因此,接口永远不适合静态,因为接口总是需要concreate类类型,您必须实例化实现相同接口的类。 话虽如此,如果你在使用MSTest,有一个叫做Shim的概念(尽管我不是Shim的忠实粉丝)。您可以创建假部件。在您的情况下,您可以创建“System”和伪DateTime的伪程序集,如下所示,
请阅读有关垫片的更多信息 here |