【问题标题】:How to compare viewmodel and dependency in unit testing?如何在单元测试中比较视图模型和依赖关系?
【发布时间】:2014-05-18 13:27:47
【问题描述】:

下面是我的方法的代码:-

   [HttpPost]
   public ActionResult Index(productViewModel model)
   {
       if (model != null)
       {             
           return PartialView("_ProductGrid", GetProduct(model));
       }
       else
       {
           return RedirectToAction("Index", "Product");
       }
   }

下面是单元测试方法的代码(在 C#,MVC 中):-

    [TestMethod]
    public void Index_WithModel_PostTest()
    {
        //Arrange
        ProductController controller = new ProductController();

        var model = new productViewModel()
        {
            Name="product1",
            Description="desc"
        };


        //Act
        PartialViewResult actual = controller.Index(model) as PartialViewResult;                       

        if (actual != null)
        {
            var viewmodel = (productViewModel)((ViewResultBase)(actual)).Model;

            int matches = _productService.GetDeals("", model.Description).Count +
                          _productService.GetInsurance("", model.Description).Count +
                          _productService.GetCategory("", model.Description).Count;


            //Assert
            Assert.IsNotNull(actual);
            Assert.IsInstanceOfType(actual, typeof(PartialViewResult));
            Assert.IsInstanceOfType(viewmodel, typeof(productViewModel));
            Assert.AreEqual("_ProductGrid", actual.ViewName);

            Assert.AreEqual(matches, viewmodel.Products.Count());
        }
    }

您可以在该方法的以下部分看到我正在从所有 3 个方法中获取 Products。但是所有这 3 种方法都是 ProductService 依赖项。我想知道我应该 mock 那个条件吗?或者我可以用其他方式做吗?我想Assert匹配变量的countactual.Product.Count

【问题讨论】:

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


    【解决方案1】:

    我认为单元测试的本质是利用关注点分离。你应该使用moq创建一个创建的repository访问的mock数据,并在控制器中调用该repository,然后将其传递给单元测试。关注点分离和单元测试的本质是能够单独测试每一层。浏览起订量

    【讨论】:

      猜你喜欢
      • 2019-12-14
      • 1970-01-01
      • 2013-08-20
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      相关资源
      最近更新 更多