2010-04-28 6 views
5

Soy realmente nuevo en TDD y, de hecho, estoy tratando de seguir la muestra de mi libro (SportsStore - Pro ASP. NET MVC Framework/Steve Sanderson/APRESS). Estoy en las páginas 103-105.Dificultad para comenzar con la prueba de unidad básica (Ejemplo de mi libro - SportsStore)

Aunque hay más en esto, como algo nuevo en todo esto, me preocupan las siguientes afirmaciones.

ProductsController controller = new ProductsController(repository); 
var result = controller.List(2); 
    //... 

con respecto a las declaraciones anteriores, cuando escribo esto (como en el libro),

var products = result.ViewData.Model as IList<Product>; 

me sale un error de compilación "System.Web.MVC.ActionResult" no contiene una definición para ViewData ... "Pero, cuando quito la Lista () de la declaración, entonces la disapear error del compilador.

var result = controller.List(2);//Doesn't work 
var result = controller;//It works 

¿Hay algo mal allí? Revisé el sitio web de Apress para ese libro, pero no hay nada en la lista como Errata o problema. Así que estoy realmente perdido.

Gracias por ayudar a

Respuesta

8

Eso se debe a que ActionResult no contiene una definición para viewdata howerver ViewResult hace y ViewResult es en realidad un ActionResult para que pueda echarlo a (ViewResult) y luego obtener el viewdata

1
var products = ((ViewResult)result).ViewData.Model as IList<Product>; 
0

alternativa, se puede cambiar el código en el controlador de los productos:

public *Action*Result List() 
{ 
    return View(productsRepository.Products.ToList()); 
} 

a:

public *View*Result List() 
{ 
    return View(productsRepository.Products.ToList()); 
} 

ViewResult es una subclase de la clase base ActionResult.

1

también puede que falte la biblioteca System.Web.Mvc de su proyecto de prueba

Cuestiones relacionadas