Я хочу к модульному тесту следующий ASP.NET Индексное действие контроллера MVC. Что я заменяю фактический параметр в утверждении ниже (заблокированный с?).
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
public class StatusController : Controller
{
public ActionResult Index()
{
return Content("Hello World!");
}
}
}
[TestMethod]
public void TestMethod1()
{
// Arrange
var controller = CreateStatusController();
// Act
var result = controller.Index();
// Assert
Assert.AreEqual( "Hello World!.", ? );
}
использовать оператор "as", чтобы сделать nullable cast. Затем просто проверьте нулевой результат
[TestMethod]
public void TestMethod1()
{
// Arrange
var controller = CreateStatusController();
// Act
var result = controller.Index() as ContentResult;
// Assert
Assert.NotNull(result);
Assert.AreEqual( "Hello World!.", result.Content);
}
Вы не можете проверить, что результат не равен нулю, получить ContentResult
и сравнить значения:
[TestMethod]
public void TestMethod1()
{
// Arrange
var controller = CreateStatusController();
// Act
var result = controller.Index();
// Assert
Assert.NotNull(result);
Assert.IsAssignableFrom(typeof(ContentResult), result);
Assert.AreEqual( "Hello World!.", result.Content);
}
Прошу прощения, если утверждения Nunit плохо сформированы, но смотрите на это как на псевдокод :)
Мне нравится создавать помощники утверждения для такого рода вещей. Например, вы могли бы сделать что-то вроде:
public static class AssertActionResult {
public static void IsContentResult(ActionResult result, string contentToMatch) {
var contentResult = result as ContentResult;
Assert.NotNull(contentResult);
Assert.AreEqual(contentToMatch, contentResult.Content);
}
}
Затем вы бы назвали это так:
[TestMethod]
public void TestMethod1()
{
var controller = CreateStatusController();
var result = controller.Index();
AssertActionResult.IsContentResult(result, "Hello World!");
}
Я думаю, что это значительно упрощает чтение и запись тестов.