¿Qué aspecto tendría una prueba de unidad simple para confirmar que existe un determinado controlador si estoy utilizando Rhino Mocks, NUnit y ASP.NET MVC 2? Estoy tratando de entender el concepto de TDD, pero no veo cómo se vería una prueba simple como "Controller XYZ Exists". Además, ¿cómo se vería la unidad de prueba en el para probar un resultado de acción en una vista?TDD un controlador con ASP.NET MVC 2, NUnit y Rhino Mocks
Respuesta
confirme que existe un controlador
pruebas de unidad que tiene en sus acciones es una fuerte sugerencia de que haya un controlador de lo que nos lleva a:
¿Cómo se vería la prueba de unidad en probar una Acción Resultado en una vista
He aquí un ejemplo:
public class HomeController: Controller
{
private readonly IRepository _repository;
public HomeController(IRepository repository)
{
_repository = repository;
}
public ActionResult Index()
{
var customers = _repository.GetCustomers();
return View(customers);
}
}
Y la prueba de la unidad correspondiente:
[Test]
public void HomeController_Index_Action_Should_Fetch_Customers_From_Repo()
{
// arrange
var repositoryStub = MockRepository.GenerateStub<IRepository>();
var sut = new HomeController(repositoryStub);
var expectedCustomers = new Customer[0];
repositoryStub
.Stub(x => x.GetCustomers())
.Return(expectedCustomers);
// act
var actual = sut.Index();
// assert
Assert. IsInstanceOfType(typeof(ViewResult), actual);
var viewResult = (ViewResult)actual;
Assert.AreEqual(expectedCustomers, viewResult.ViewData.Model);
}
MVCContrib tiene algunas funciones muy útiles que le permite burlas HttpContext y también test your routes.
¿Por qué le gustaría probar si existe un controlador? Lo que debes hacer es probar el comportamiento del controlador. Su controlador es un código bajo prueba y pone alguna expectativa sobre él y luego afirma si las expectativas se cumplen o no.
Hay muchos tutoriales sobre cómo hacer TDD con ASP.NET MVC. Usted puede comenzar, por ejemplo, aquí
Lo he visto, pero está mal. Nunca debes afirmar más de una vez por prueba. Además, está más centrado en las pruebas de repositorio que una simple prueba de controlador. –
¿Una afirmación por prueba? Eso podría tener sentido en algún contexto en una galaxia lejana, pero para las pruebas de Controlador tiene poco sentido. –
- 1. VB.NET y NUnit - TDD
- 2. Rhino Mocks: Mocking HttpRequestBase.Files
- 3. Rhino Mocks - Usar Arg.Matches
- 4. TDD con ASP.NET MVC 1.0
- 5. Rhino Mocks, VerifyAllExpectations
- 6. Rhino Mocks & Compact Framework
- 7. AssertWasCalled in rhino mocks
- 8. Rhino Mocks Parcial Mock
- 9. Rhino Commons y Rhino Mocks Documentos de referencia?
- 10. Obtención de DRY con Rhino Mocks
- 11. Rhino Mocks - ¿Realmente necesitamos talones?
- 12. Rhino Mocks AAA ¿Arranque rápido?
- 13. ASP.NET MVC TDD con bases de datos LINQ y SQL
- 14. Simula un objeto con un constructor - Rhino Mocks
- 15. Instalación de nUnit con ASP.Net MVC 1.0
- 16. ASP.NET MVC 2 Preview 2: Áreas duplican controlador problema
- 17. Rhino Mocks recibe un argumento, lo modifica y lo devuelve?
- 18. Rhino Mocks: Stub & Mocks. Cuál es la diferencia
- 19. Cómo usar Rhino Mocks para simular una HttpContext.Application
- 20. Mocking COM Interfaces usando Rhino Mocks
- 21. Obstaculizar una propiedad obtener usando Rhino Mocks
- 22. Rhino Mocks Tutoriales paso a paso
- 23. rhino-mocks - buenas aplicaciones de muestra
- 24. Rhino Mocks: "Verificar" frente a "Assert"
- 25. Comparación de sintaxis entre Moq y Rhino Mocks
- 26. coincidencia de argumento parcial en rhino mocks
- 27. Devolución de listas vacías por defecto con Rhino Mocks
- 28. ASP.NET MVC: Controlador simulado.Url.Action
- 29. Pruebas de la unidad ASP.NET MVC con NUnit
- 30. Contexto del controlador Asp.net-mvc burlón
Más importante aún, estoy usando ASP.NET MVC 2. –
¿Vamos a suponer que sus controladores están registrados en tiempo de ejecución? En este caso, ¿no querrías una prueba de integración en lugar de una prueba unitaria? –