Perdóneme por mi falta de conocimiento de Rails y por contarle lo que ya sabe sobre los rieles, pero espero poner las cosas en un formato de comparación para otros usuarios.
Rails tiene 3 tipos de pruebas Unidad, Funcional e Integración.
pruebas unitarias prueba sus modelos
pruebas funcionales para sus controladores
pruebas de integración para probar el flujo entre el controlador acciones
Este paradigma parece ser enseñado desde el principio con los carriles.
Sin embargo, en el mundo de .NET MVC, los métodos de prueba no se presentan como en Rails.
Muchos desarrolladores escriben Pruebas unitarias en sus controladores en la forma en que escribe una Prueba unitaria en sus Modelos en rieles. Básicamente llama a un método (Acción del controlador) y recupera un objeto del método. A continuación, puede afirmar que tiene los valores que espera. Hacer esto es un dolor en el trasero porque tienes que burlarte de tanta porquería (HttpContext, etc.). Además, no es una prueba funcional. Solo está probando un método en lugar de probar la funcionalidad de la aplicación.
En Rails no está escribiendo una Prueba de unidad en su controlador, en realidad está realizando una solicitud web y obtiene una respuesta web. Puede verificar el código de estado, las cookies, etc. Está probando el sistema de principio a fin.
Hay varias formas de hacerlo.NET MVC
1) Steven Sanderson tiene una pequeña herramienta para ayudar con esto.
http://blog.stevensanderson.com/2009/06/11/integration-testing-your-aspnet-mvc-application/
Cuando vi por primera vez y empecé a usarlo, pensé que era impresionante, pero me encontré con problemas.
2) RestSharp + NUnit: esta es mi preferencia actual para realizar este tipo de pruebas. Te permite juntar una solicitud web y obtener una respuesta bastante fácil. Con unos pocos métodos genéricos puedes moverte bastante rápido con restsharp. NUnit le dará las afirmaciones que necesita. Acabo de realizar la solicitud contra mi servidor IIS local y afirmo los diferentes elementos que espero en la respuesta. Realmente no podrá probar qué modelo está asignado a la vista como puede hacerlo en rieles, pero eso no ha sido un problema para mí.
Si está acostumbrado a RSpec, puede obtener SpecFlow que debería ser similar.
Rails crea pruebas directamente en el marco y es un ciudadano de primera clase. Es una pena que no sea así en .NET MVC.
Espero que ayude.
Una acción del controlador es simplemente un método y se puede probar como tal (utilizando simulación/burla para aislamiento). ¿Hay algo más en particular en las pruebas funcionales que el patrón Arrange, Act, Assert para cada condición y proporcionar las instancias concretas de las clases para evitar el aislamiento y la prueba de toda la aplicación? – StuperUser
Parte del motivo puede ser la terminología. En el mundo de Rails hablamos de pruebas funcionales, pero realmente nos referimos a pruebas unitarias para nuestros controladores. Según lo que he visto, la mayoría de los programadores de Rails mezclan pruebas unitarias verdaderas (solo código de prueba) y pruebas funcionales (incluidas dependencias externas, como una base de datos). La comunidad .NET parece seguirlos más de cerca. Roy Osherove tiene un libro decente sobre pruebas en .NET http://artofunittesting.com/ –