私は次のようにの使用HttpContext.Current.Server.MapPathなどFile.ReadAllLinesを作るユニットテストしようとしています方法があります:MVCモッキング(部品番号) - HttpContext.Current.Server.MapPath
public List<ProductItem> GetAllProductsFromCSV()
{
var productFilePath = HttpContext.Current.Server.MapPath(@"~/CSV/products.csv");
String[] csvData = File.ReadAllLines(productFilePath);
List<ProductItem> result = new List<ProductItem>();
foreach (string csvrow in csvData)
{
var fields = csvrow.Split(',');
ProductItem prod = new ProductItem()
{
ID = Convert.ToInt32(fields[0]),
Description = fields[1],
Item = fields[2][0],
Price = Convert.ToDecimal(fields[3]),
ImagePath = fields[4],
Barcode = fields[5]
};
result.Add(prod);
}
return result;
}
私は(予想通り)が失敗したユニットテストのセットアップ持っている:私は以来、私はちょうど実装することができるように見えるいけない部品番号と依存インジェクションで読んをたくさん行っている
[TestMethod()]
public void ProductCSVfileReturnsResult()
{
ProductsCSV productCSV = new ProductsCSV();
List<ProductItem> result = productCSV.GetAllProductsFromCSV();
Assert.IsNotNull(result);
}
を。私はまた、例えば、How to avoid HttpContext.Server.MapPath for Unit Testing Purposesのような簡単な答えを見たことがありますが、実際の例ではそれに従うことができません。
私は、誰かがこれを見て、この方法の成功テストをどのように実施するかについて正確に教えてくれることを願っています。私は、必要なバックグラウンドをたくさん持っていると思っていますが、すべて一緒に引っ張ることはできません。