我的产品代码中有这段代码。

string cwd = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
Directory.SetCurrentDirectory(cwd);

当我尝试在 UnitTest 中执行此逻辑时,我得到 NullReferenceException,因为 cwd 为空。

有人可以帮助我了解我应该对我的产品代码进行哪些更改以使其可进行单元测试吗?

最佳答案

一种方法是将获取 ApplicationPhysicalPath 的责任转移到一个专用类,然后您将其提供给包含您的产品代码的类。

这样,当您进行单元测试时,您可以用模拟的等效项替换该依赖项。

这种方法是 Dependency Injection/Inversion of Control 软件工程模式的重要组成部分。

关于c# - System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath 对于单元测试为 null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30083783/

10-15 00:39