我工作的单元测试对我的MVC 4 application.And下面是我想要做单元测试方法之一: -单元测试方法根据型号
[HttpPost]
public ActionResult Index(ProductViewModel model)
{
if (model != null)
{
return PartialView("_ProductGrid", SearchProduct(model));
}
else
{
return RedirectToAction("Index");
}
}
我写的单元测试方法,但是当我通过代码覆盖选项检查代码覆盖时,其他部分显示为未被覆盖。但我不确定原因。
任何人都可以帮我解决这个问题吗?
下面是我的测试方法的代码:
[TestMethod]
public void IndexPostTest()
{
// Arrange
const string searchInDescription = "all";
ProductController controller = new ProductController();
ProductViewModel model = new ProductViewModel
{
SearchA = true,
SearchB= true,
SearchIC = true,
Description = searchInDescription
};
TestControllerBuilder builder = new TestControllerBuilder();
builder.InitializeController(controller);
// Act
var result = controller.Index(model) as ActionResult;
var viewmodel = (ProductViewModel)((ViewResultBase)(result)).Model;
int matches = _productService.LookupA("", searchInDescription).Count +
_productService.LookupB("", searchInDescription).Count +
_ProductService.LookupC("", searchInDescription).Count;
if (result != null && viewmodel != null && result.GetType() == typeof(PartialViewResult))
{
// Assert
Assert.IsNotNull(result);
Assert.IsInstanceOfType(viewmodel, typeof(ProductViewModel));
if (viewmodel.Products != null)
Assert.AreEqual(matches, viewmodel.Products.Count());
if (matches > 0 && viewmodel.Products != null && viewmodel.Products.ToList().Count > 0 && viewmodel.Products.ToList()[0].Description != "")
{
Assert.IsTrue(viewmodel.Products.ToList()[0].Description.ToUpper().Contains(searchInDescription.ToUpper()));
}
}
else if (result != null && result.GetType() == typeof(RedirectResult))
{
var redirectResult = result as RedirectResult;
// Assert
Assert.IsNotNull(result);
Assert.AreEqual("Index", redirectResult.Url);
}
}
你能显示你的单元测试的其他部分? –