【发布时间】:2016-11-12 12:14:08
【问题描述】:
我在网上搜索但找不到合适的解决方案。我的问题是我想测试我的 readFileToList 方法,该方法是在文件(csv)中创建一个过滤器;创建对象列表。 在我的应用程序中没问题,我尝试在单元测试项目中使用以下方法进行测试:
[TestMethod]
public void readingFile()
{
HomeController controller = new HomeController();
List<City> result = controller.readFileToList("sample_data.csv", Pairing.Of("cityname", "Antalya"));
Assert.AreEqual(83, result.Count);//"cityname" equals to Antalya is 83
}
我调试了这个测试并看到了函数的错误; “HttpRuntime.AppDomainAppPath”返回 null,我想知道如何处理这个和下一个问题来测试这个方法。 我只希望生成文件的这个测试检查计数等于预期计数(83)
功能:
public List<City> readFileToList(string filename, params KeyValuePair<string, object>[] queryparams)
{
string fullName = Path.Combine(HttpRuntime.AppDomainAppPath, "App_Data", filename);
string[] lines = System.IO.File.ReadAllLines(fullName);
IQueryable<City> cities = lines.Skip(1).Select(l => new City
{
name = l.Split(',')[0],
cityCode = Convert.ToInt32(l.Split(',')[1]),
district = l.Split(',')[2],
zipCode = l.Split(',')[3],
}).AsQueryable();
foreach (KeyValuePair<string, object> item in queryparams)
{
if (item.Key == "cityname" && item.Value.ToString() != "0")
cities = cities.Where(w => w.cityCode.ToString() == item.Value.ToString());
}
return cities.ToList();
}
【问题讨论】:
标签: c# unit-testing