tengo un método de acción como esta en mi regulador¿Cómo moq a ISingleResult? ¿Debería? o hay un mejor método?
public ActionResult Index()
{
using (NorthwindDataContext db = new NorthwindDatacontext())
{
var results = db.GetRecordSets(arg1, ....).ToList();
// use results as list
}
return View();
}
y quería empezar a hacer pruebas para ello (si, después de su construcción, no antes ... pero el código fue escrito antes de empezar a utilizar TDD así que ...)
y me di cuenta de que la adición de una propiedad como ésta al controlador
public delegate NorthwindDatacontext ContextBuilderDelegate();
public ContextBuilderDelegate ContextBuilder { get; set; }
podría añadir en el constructor algo como esto ...
ContextBuilder =() => new NorthwindDatacontext();
entonces podría probar la ActionMethod establecer la propiedad ContextBuilder con un simulacro de NorthwindDataContext
var controller = new MyController();
var mockDataContext = new Mock<NorthwindDatacontext>();
controller.ContextBuilder =() => mockDataContext.Object;
... Pero no he encontrado ninguna manera de utilizar esto porque todos los métodos de NorthwindDataContext utilizan ISingleResult como returnType y no puedo encuentra la manera de crear un objeto con esa interfaz. He intentado esto
var theResult = new List<GetRecordSetsResult>();
// fill the data structure here with the provided result...
mockDataContext.Setup(c => c. GetRecordSets()).Returns(theResult as
ISingleResult<GetRecordSetsResult>);
pero no funciona porque ycompararlos es nulo cuando se convierte a ISingleResult.
¿Hay alguna manera de crear un objeto ISingleResult para probar de esta manera o estoy haciendo la manera incorrecta de hacer las cosas aquí?
Gracias de antemano
Gracias, su pregunta y la primera respuesta realmente me ayudaron a resolver el problema. – Odd