You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Autofac模拟使用.Include(...)时失效,如何解决?

Linq to Entities单元测试添加AsNoTracking()和Include()后失败的解决办法

我在编写包含Linq to Entities查询的单元测试时,给查询加上.AsNoTracking()和.Include(x => x.table)后,测试开始报错。
已经通过添加A.CallTo(() => db.table.AsNoTracking()).Returns(db.table)解决了.AsNoTracking()的问题,但.Include()相关的问题一直没搞定,目前遇到的错误是:

Castle.DynamicProxy.Generators.GeneratorException: Can not create proxy for type System.Data.Entity.Internal.Linq.IInternalQuery`1[[DataClasses.INVOICE.table
because it is not accessible. Make it public, or internal and mark your assembly with...

最终解决方法

  • 模拟实体集合的getter方法,让FakeItEasy和Autofac不需要处理手写的查询逻辑,就能绕过大部分问题
  • 如果需要针对特定查询做测试,直接使用SQLite来执行测试,避免模拟EF内部接口带来的访问性问题

内容的提问来源于stack exchange,提问作者Dries

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:29:57