【发布时间】:2020-11-09 14:02:44
【问题描述】:
大家好,我的测试有问题。 我有课
public class RepositoryWorker
{
public IRepository Repository { get;}
private string _path;
public RepositoryWorker(IRepository repository)
{
if (repository is XmlRepository)
{
Repository = repository;
CheckDirectoryForXMl();
}
if (repository is JsonRepository)
{
Repository = repository;
CheckDirectoryForJson();
}
}
public void WriteConfig(Config config)
{
Repository.WriteConfig(config,_path);
}
public Config ReadConfig(string path)
{
return Repository.ReadConfig(path, _path);
}
private void CheckDirectoryForXMl()
{
_path = Path.Combine(Directory.GetCurrentDirectory(),
ConfigurationManager.AppSettings.Get("XmlConfigPath"));
var directory = new DirectoryInfo(_path);
if (!directory.Exists)
{
directory.Create();
}
}
private void CheckDirectoryForJson()
{
_path = Path.Combine(Directory.GetCurrentDirectory(), ConfigurationManager.AppSettings.Get("JsonConfigPath"));
var directory = new DirectoryInfo(_path);
if (!directory.Exists)
{
directory.Create();
}
}
}
我有一个变量路径,它从当前目录和 app.config 中获取一个值,但在测试中我得到 null,因为我无法从配置中获取这个路径我该如何解决这个问题
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key ="XmlConfigPath" value ="XmlConfigs"/>
<add key ="JsonConfigPath" value ="JsonConfigs"/>
</appSettings>
</configuration>
【问题讨论】:
-
您正在组合两个字符串 1) Directory.GetCurrentDirectory() 2) ConfigurationManager.AppSettings.Get("XmlConfigPath") 检查两个字符串(以及组合的字符串)以查看路径是否有效。路径可以是相对的或绝对的。如果相对路径的起始位置是应用程序可执行文件所在的文件夹(如调试或发布文件夹)。
标签: c# unit-testing dependency-injection mocking