/ / Primera prueba se bloquea al usar MSTEST con ASP.NET MVC 1 - asp.net, asp.net-mvc, mstest

La primera prueba se bloquea al usar MSTEST con ASP.NET MVC 1 - asp.net, asp.net-mvc, mstest

Estoy intentando comenzar a usar Unit Testing y quiero probar el siguiente Controlador:

Clase pública AjaxController: Controlador {

...

    public JsonResult RateVideo( int userRating, long videoId )
{

string userName = User.Identity.Name;

... }

}

He creado un TestClass con el siguiente método:

[ Método de prueba vacío público TestRateVideo ()

    {

//Arrange
AjaxController c = new AjaxController();

//Act
JsonResult jr = c.RateVideo(1, 1);



//Assert
//Not implemented yet

}

Selecciono depurar y ejecutar la prueba. Cuando el código llega a la 1ª declaración:

string username = User.Identity.Name;

La depuración se detiene y aparece un mensaje que dice que la prueba falló.

Cualquier orientación que pueda ofrecer sería apreciada.

Respuestas

0 para la respuesta № 1

El problema más común en la prueba de controladores es el uso de funciones que dependen de HttpContext. La implementación de la propiedad User es algo como:

public IPrincipal get_User()
{
if (this.HttpContext != null)
{
return this.HttpContext.User;
}
return null;
}

Como puede ver, el usuario devolverá nulo porque elHtppContext no se ha inicializado y llamar .Identity lanzará una excepción. Afortunadamente, MVC te permite configurar la propiedad ControllerContext para que puedas crear tu propia instancia con un HttpContext simulado.

El proyecto MVCContrib tiene algunos ayudantes de prueba. Puede usar TestControllerBuilder en MVCContrib.TestHelper.dll para construir sus controladores dentro de sus clases de prueba con contexto simulado.