我有一个方法,它调用 .NET XDocument.Load() 方法从 url 加载 xml 数据。我想让我的班级单元可测试。
那么如何使该调用可模拟/可单元测试?
private void ProcessData(string url)
{
// todo: make this mockable
var xDocument = XDocument.Load(url);
// the rest of the code
}
我使用的一种解决方案是将 xmlUrlLoader 注入到下面的类中:
private readonly Func<string, XDocument> _xmlUrlLoader;
public MyConstructor(Func<string,XDocument> xmlUrlLoader)
{
_xmlUrlLoader = xmlUrlLoader;
}
private void ProcessData(string url)
{
// todo: make this mockable
var xDocument = this._xmlUrlLoader(url);
// the rest of the code
}
有没有更好的办法?