Имам mvc проект и искам да напиша методи за тестване на единица, за да тествам методите на контролера. Не искам просто да тествам дали контролерът връща правилен изглед или не, искам да тествам моделния обект, върнат от partialViewResult. По-долу е методът на контролера. Това връща обект на модел към изглед за попълване на мрежата. Искам да тествам дали връща 10 записа в моделния обект в partialview.
public ActionResult productGrid (string pID = null)
{
List<product> listproductModel = new List<product>();
List<productModel> listviewproductModel = new List<productModel>();
try {
listproductModel = GetProductDetails(string.IsNullOrEmpty(pId) ? 0 : Convert.ToInt32(pId));
if (listproductModel != null)
{
Mapper.Map(listproductModel, listViewproductModel); // Using Auto mapper to map
}
HttpContext.Session["ProductList"] = listViewproductModel;
}
catch (Exception ex)
{
this.WriteLog(LogType.ERROR, ex.Message, ex);
throw ex;
}
return PartialView("_productGrid", listViewproductModel);
}
По-долу е методът за тестване на единица (аз съм начинаещ в това, така че може да има много грешки). Промених малко метода си на тестване. той е в състояние да провери броя на записите в моделния обект, върнат от метода на контролера към изгледа, но възниква друга грешка. Моля, проверете следния код за подробности.
public void productGridTest()
{
string platformId = null;
var obj = new ProductController();
var result = obj.productGrid(platformId) as PartialViewResult;
Assert.AreEqual(true, ((IList<productModel>)result.ViewData.Model).Count == 10, "Error");
}
Където productModel е моделен обект, съдържащ подробности за продуктите.
Горният тестов метод работи правилно, когато поставям
HttpContext.Session["ProductList"] = listViewproductModel;
в метода на контролера вътре в КОМЕНТАРИ (с други думи, деактивирайте оператора). В противен случай връща изключение за нулева препратка поради това изявление. Моля, помогнете ми как да разреша тази грешка! Благодаря! :)
PartialViewResult result =...
? Също така, това действителният код ли е, тъй като деклариратеplatformId
, но предаватеpId
? Трудно е да помогнем, ако не гледаме действителния код! - person Belogix   schedule 16.07.2015