在我的控制器的单元测试中,我模拟了db上下文类,它将一个假的db上下文对象注入到控制器构造函数中。伪上下文类有假的DBSet类,它们工作正常。但是,我不知道如何为POST单元测试伪造DbEntityEntry.Entry()方法。简化的POST方法代码如下
[ResponseType(typeof(Trip))]
public async Task<IHttpActionResult> PostTrip(Trip trip)
{
db.Trips.Add(trip);
await db.SaveChangesAsync();
//Load driver user object
db.Entry(trip).Reference(x => x.User).Load();
var tripDTO = new TripDTO()
{
Id = trip.Id,
Status = trip.Status,
BookedSeats = trip.BookedSeats,
DriverName = trip.User.Name,
};
return CreatedAtRoute("DefaultApi", new { id = trip.Id }, tripDTO);
}
显然,我必须以某种方式模拟DbEntityEntry.Entry()方法,使db.Entry(trip).Reference()方法与LINQ表达式一起使用。如果您以前遇到过类似的问题,请帮忙吗?
非常感谢。