Стоит ли тестировать параметр действия контроллера MVC для значений null
? Цель состоит в том, чтобы гарантировать, что действительные значения переданы действию, и я думаю, что также возможно использование null
.C# Unit Testing MVC Controller Действие Параметр для значения Null
Вот действие контроллера:
[HttpPost]
public ActionResult Create(ContactViewModel viewModel)
{
if (!ModelState.IsValid)
return View("Create", viewModel);
if (viewModel == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No data received");
var contact = Mapper.Map<Contact>(viewModel);
//contact.UserId = User.Identity.GetUserId();
contact.UserId = _user.Id;
_unitOfWork.Contacts.Add(contact);
_unitOfWork.Complete();
return RedirectToAction("Index");
}
И мой тест для проверки нулевого параметра:
[TestMethod]
public void CreatePost_NullViewModelPassed_ShouldReturnBadRequest()
{
var result = _controller.Create(null) as HttpStatusCodeResult;
result.StatusCode.Should().Be(400);
}
выше тест всегда проходит, но это полезный тест? Я пытался ударить метод столба с Почтальон, но я получаю версию HttpGet
моих Create
действий:
public ViewResult Create()
{
return View("Create", new ContactViewModel());
}
Показать еще немного логики проверяемого метода – Nkosi
Возможно, вам понадобится предоставить больше кода, связанного с вашей проблемой. Постарайтесь представить пример, который является самодостаточным, как можно меньшим и воспроизводит вашу проблему. Что касается ваших тестов, вы должны стараться как можно больше охватить. Если ваш класс/метод принимает нулевое значение (и, особенно, если это нулевое значение может означать разницу в исполнении), вы должны проверить его. Точно так же, если вы не должны принимать нулевые значения, ваш метод должен вызывать «ArgumentNullException» (или аналогичный), который вы должны проверить. – gmiley