Mock AsNoTracking Entity Framework

前端 未结 3 821
傲寒
傲寒 2020-12-05 18:18

How do I mock AsNoTracking method?
In below example, DbContext has injected to the service class.It works fine if I remove AsNoTracking extension method from GetOrderedP

3条回答
  •  不思量自难忘°
    2020-12-05 18:44

    Looking at the source code of the AsNoTracking() extension method:

    public static IQueryable AsNoTracking(this IQueryable source)
    {
        var asDbQuery = source as DbQuery;
        return asDbQuery != null ? asDbQuery.AsNoTracking() : CommonAsNoTracking(source);
    }
    

    Since source (your DbSet you're trying to mock) is indeed a DbQuery (because DbSet is deriving from DbQuery), it tries to invoke the 'real' (non-mocked) AsNoTracking() method which rightfully returns null.

    Try to mock the AsNoTracking() method as well:

    mockSet.Setup(x => x.AsNoTracking()).Returns(mockSet.Object);
    

提交回复
热议问题