Carga de entidades relacionadas en DbContext simulado usando Moq para pruebas de controlador Web Api 2
Estoy intentando probar algunos controladores Web Api 2 que usan Entity Framework 6 pero tengo problemas con la carga de las entidades relacionadas después de que la entidad se haya agregado. Estoy usando Moq para crear un DbContext y DbSet simulados, y he agregado
public virtual void MarkAsModified<T>(T item) where T : class
{
Entry(item).State = EntityState.Modified;
}
para moverse por el_db.Entry(foo).State = EntityState.Modified;
problema en una acción Put.
La acción Api es una publicación en este ejemplo simplificado donde necesitamos recuperar 2 entidades relacionadas (Bar y Qux).
[ResponseType(typeof (Foo))]
public async Task<IHttpActionResult> PostFoo(Foo foo)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
//Do other stuff
_db.Foos.Add(foo);
_db.Entry(foo).Reference(x => x.Bar).Load();
_db.Entry(foo).Reference(x => x.Qux).Load();
await _db.SaveChangesAsync();
return CreatedAtRoute("DefaultApi", new {id = foo.Id},foo);
}
Y luego una prueba simplificada sería
[TestMethod]
public async Task PostFoo()
{
var model = new Foo
{
Name="New Foo",
QuxId = 99,
Qux = null,
BarId = 66,
Bar = null
};
var result = await _controller.PostFoo(model) as CreatedAtRouteNegotiatedContentResult<Foo>;
Assert.IsNotNull(result);
Assert.IsNotNull(result.Qux);
Assert.IsNotNull(result.Bar);
}
¿Hay alguna manera de hacer más simulada_db.Entry(foo).Reference(x => x.Bar).Load();