У меня есть проект mvc, и я хочу написать единичные тестовые методы для тестирования методов контроллера. Я не хочу просто проверять, возвращает ли контроллер правильный вид или нет, я хочу проверить объект модели, возвращаемый partViewResult. Ниже приведен метод контроллера. Это возвращает объект модели для представления, чтобы заполнить сетку. Я хочу проверить, возвращает ли он 10 записей в объекте модели внутри частичного просмотра.Как устранить исключение ссылочной ссылки, созданное HttpContext.Session (в методе контроллера) в проекте модульного тестирования C#?
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 - это модельный объект, содержащий подробную информацию о продуктах.
выше TestMethod работает должным образом, когда я ставлю
HttpContext.Session["ProductList"] = listViewproductModel;
в методе контроллера внутри КОММЕНТАРИЕВ (другими словами, отключить заявление). В противном случае он возвращает исключение ссылочной ссылки в силу этого утверждения. Пожалуйста, помогите мне, как решить эту ошибку! Спасибо! :)
Можете ли вы подтвердить по строке 3, что вы имеете в виду 'PartialViewResult result = ...'? Кроме того, это фактический код, когда вы объявляете 'platformId', но передаете' pId'? Трудно помочь, если мы не посмотрим на фактический код! – Belogix
Мне очень жаль. Да platformID должен быть pId. Мой плохой :( – Satwiki
Спасибо. И пожалуйста, подтвердите точную строку, что ошибки, пожалуйста? – Belogix