【发布时间】:2013-02-14 11:51:01
【问题描述】:
我在 Visual Studio 2010 的 MVC4 Web API 应用程序中使用 XDocument,但不确定测试策略。
我的大多数单元测试都使用内存中的 XDocument,它适用于控制器、服务、存储库测试。
但是,我有 XDocument.Load(filename) 和 XDocument.Save(filename) 场景,我想对其进行测试(使用单元测试或集成测试)。
我一直在查看SO here 上的以下问题\答案,但我不确定如何继续。
public class PathProvider
{
public virtual string GetPath()
{
return HttpContext.Current.Server.MapPath("App_Data/policies.xml")
}
}
PathProvider pathProvider = new PathProvider();
XDocument xdoc = XDocument.Load(pathProvider.GetPath());
所以,我知道我现在可以模拟对任何调用 XDocument.Load(pathProvider.GetPath()) 的调用。
然后我是否应该尝试测试 PathProvider 是否有效?如果是这样,我将如何处理这个问题?
谢谢
戴维
【问题讨论】:
-
您可以使用MS Fakes模拟对
XDocument.Load的调用。 -
谢谢,我应该说我正在使用 VS 2010 并且无法升级。我相信假货在 2010 年是行不通的。
-
你可以使用前任Moles
-
是的,我要去看看。这被认为是“良好做法”吗?我担心我无法正确测试这个是糟糕设计的征兆?
-
“但是,我有 XDocument.Load(filename) 和 XDocument.Save(filename) 方案,我想对其进行测试(使用单元测试或集成测试)。”你想测试什么?实际的 XML 结构(集成测试)还是调用
Save或Load方法的事实(单元测试)?我是否正确理解您在软件中处理 XDocument 并且只需要在专用类中处理文件引用?
标签: testing mocking tdd linq-to-xml