Загрузка связанных объектов в Mocked DbContext с использованием Moq для тестов контроллера Web Api 2

Я пытаюсь провести модульное тестирование некоторых контроллеров Web Api 2, которые используют Entity Framework 6, но возникают проблемы с загрузкой связанных объектов после добавления объекта. Я использую Moq для создания поддельных DbContext и DbSet, и добавил

public virtual void MarkAsModified<T>(T item) where T : class
{
   Entry(item).State = EntityState.Modified;
}

обойти_db.Entry(foo).State = EntityState.Modified; вопрос о действии пут.

Действие Api - это Пост в этом упрощенном примере, где нам нужно вернуть 2 связанных объекта (Bar и 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);
}

И тогда будет упрощенный тест

[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);
}

Есть ли более дружественный способ сделать_db.Entry(foo).Reference(x => x.Bar).Load();

Ответы на вопрос(1)

Ваш ответ на вопрос