¿Cómo se registra la solicitud y la respuesta HTTP completas cuando se ejecutan pruebas de integración de una aplicación ASP.NET MVC 3?

Supongamos que tengo un controlador y una acción ASP.NET MVC 3 para los que escribí pruebas de integración.

namespace Sample.Controllers {
    public class MyController : Controller {
        [HttpPost]
        public ActionResult Edit(MyModel model)
        {
            // process requests
        }
    }
}

Las pruebas tienen el siguiente "patrón".

namespace Sample.Controllers.IntegrationTests {

    [TestClass] 
    public class MyControllerTests 
    {
        [TestMethod]
        public void Edit()
        {
            var request = (HttpWebRequest) WebRequest.Create(new Uri(uri));
            request.Method = "POST";
            request.Accept = "application/json";
            request.AllowAutoRedirect = false;
            request.AutomaticDecompression = DecompressionMethods.GZip;
            request.UserAgent = "IntegrationTests/1.0";
            request.ContentType = "application/json";
            var resource = CreateResource();
            using (Stream stream = request.GetRequestStream())
            {
                // serialize resource to stream
            }

            using (var response = (HttpWebResponse) request.GetResponse())
            {
                 Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

                 /* perform more tests */
            }
        }

        public MyModel CreateResource() {
            /* create an instance of mymodel */
        }
    }

}

Estas pruebas tienen como objetivo verificar la funcionalidad, la seguridad, etc.; por lo tanto, las pruebas de burlas y unidades no son suficientes. Las pruebas se ejecutan sin supervisión y siempre usan https (y los certificados se verifican por razones de seguridad), por lo que usar un proxy es problemático. También se ejecutan con privilegios limitados.

De vez en cuando las pruebas fallan. Me gustaría guardar una copia de la solicitud y la respuesta (similar a lo que violinista lo hace) y asociarlo con cada prueba, de modo que uno pueda usarlo retrospectivamente para diagnosticar problemas, si los hay.

¿Se pueden guardar la solicitud y las respuestas (incluidos sus encabezados) en el disco sin efectos secundarios que cambien el resultado de las pruebas? Por ejemplo, para transmisiones grandes, la transmisión de respuesta no se puede buscar, por lo que intentar guardar la transmisión en el disco antes de continuar probando la respuesta no parece funcionar.

preguntado el 12 de junio de 12 a las 19:06

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.