MVC单元测试 - System.NullReferenceException

时间:2017-08-03 22:38:29

标签: c# asp.net-mvc unit-testing

我对单元测试完全陌生,我正在努力学习自己。我在第一道障碍中失败了,尽管有无数的书籍和网站我看不出我做错了什么......请有人能告诉我吗?我有一个Action ViewResult如下我正在测试:

    public ViewResult ProductList()
    {
        List<ProductItem> allProducts = CallGetAllProducts();
        return View(allProducts);
    }

你可以看到它正在调用一个函数:

    private List<ProductItem> CallGetAllProducts()
    {
        var productFilePath = Server.MapPath(@"~/CSV/products.csv");
        var products = new ProductsCSV();

        return (products.GetAllProductsFromCSV(productFilePath));
    }

接下来调用以下函数:

    public List<ProductItem> GetAllProductsFromCSV(string csvPath)
    {
        String[] csvData = File.ReadAllLines(csvPath);
        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;
    }

我在相应的ControllerTest文件中使用以下测试方法创建了一个单元测试项目:

    [TestMethod()]
    public void ProductListGetsViewResult()
    {
        ProductsController controller = new ProductsController();
        ViewResult result = controller.ProductList() as ViewResult;
        Assert.IsNotNull(result);
    }

据我所知,我已经设置了所有正确的引用,但是运行此测试的结果又回来了:

结果讯息:
测试方法ShoppingBasket.Controllers.Tests.ProductsControllerTests.ProductListGetsViewResult抛出异常: System.NullReferenceException:未将对象引用设置为对象的实例。

看起来问题是在过程的“行动”部分调用ViewResult ......但为什么,我不知道。

0 个答案:

没有答案