如何在单元测试中伪造DbEntityEntry <t> Entry(T实体)方法?

时间:2015-10-12 07:11:45

标签: c# entity-framework unit-testing mocking dbcontext

在我的控制器的单元测试中,我模拟了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表达式一起使用。如果您以前遇到过类似的问题,请帮忙吗?

非常感谢。

0 个答案:

没有答案