我正在为我创建的一个记录器类编写一些单元测试,我想要模拟这个file类。我找不到需要用来创建MOQ的接口...那么,如何成功地MOQ一个没有接口的类呢?
我也不清楚如何在没有可用的接口的情况下使用依赖注入:
private FileInfo _logFile;
public LogEventProcessorTextFile(FileInfo logFile) {
_logFile = logFile;
}当我真的想做这样的事情时(注意IFileInfo而不是FileInfo):
private IFileInfo _logFile;
public LogEventProcessorTextFile(IFileInfo logFile) {
_logFile = logFile;
}发布于 2009-10-18 09:08:08
使用SystemWrapper,这是一个库,它为许多本身不实现接口的.NET类提供接口和可模拟的包装器类。
发布于 2009-10-17 16:53:11
设计您的代码,以便访问具有相同功能的接口(例如命名为IFileInfo),而不是直接访问FileInfo类。在生产代码中,您将使用一个仅将其所有功能委托给系统FileInfo类的类,但是对于单元测试,您可以模拟该接口。
例如,在我制作的一个应用程序中,根据当前日期的不同,我声明了以下接口:
interface IDateTimeProvider
{
DateTime Today();
}而production类仅仅是:
class DateTimeProvider : IDateTimeProvider
{
public DateTime Today()
{
return DateTime.Today;
}
}您可以通过使用依赖注入引擎来补充这种方法,以决定在每种情况下都应该使用真正的类还是模拟类。
发布于 2013-08-27 08:55:03
这可能有助于您简化静态或不可模拟第三方类的包装器类的创建。此工具将在您的Visual Studio项目中生成接口和任何现有类的具体包装类,例如System.IO。
https://stackoverflow.com/questions/1582596
复制相似问题