【发布时间】: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匹配变量的count和actual.Product.Count。
【问题讨论】:
标签: c# asp.net-mvc unit-testing dependencies moq