挑战使代码可测试
本文关键字:测试 代码 挑战 | 更新日期: 2023-09-27 18:35:58
我正在重构遗留代码以使其(单元)可测试。我有两个类实现相同的接口,如下所示。在其中一个类中,我对DirectoryEntry有外部依赖。我建议的处理方法是创建一个 IDirectoryEntry 接口,并将目录条目作为参数传递给 GetGroups 方法。问题是这会破坏IMyInterface。
重构此代码的更好方法是什么?
public interface IMyInterface
{
List<string> GetGroups();
}
public class MyFirstClass : IMyInterface
{
public List<string> GetGroups()
{
..
var directoryEntry = new DirectoryEntry(path);
..
return something;
}
}
public class MySecondClass : IMyInterface
{
public List<string> GetGroups()
{
return somethingElse;
}
}
问候弗兰克
如果你只有一个类有外部依赖关系,你可能不想把它作为参数传递。更好的方法是在构造函数中传递它:
public class MyFirstClass : IMyInterface
{
private IDirectoryEntry _entryAccessor;
public MyFirstClass(IDirectoryEntry entryAccessor)
{
_entryAccessor = entryAccessor;
}
public List<string> GetGroups()
{
var directoryEntry = _entryAccessor.Do(path);
return something;
}
}