【发布时间】:2021-02-25 09:25:18
【问题描述】:
简介
我在模拟用户与就业之间的一对多关系的数据库时遇到问题。就业已正确添加到模拟数据库,但当同一实体添加到用户实体中的就业集合时,它不会加载。
代码
这些只是这两个类的案例的重要部分
用户
public virtual ICollection<Employement> Employments { get; } = new List<Employment>();
就业
[Required]
[ForeignKey(nameof(User))]
public Guid UserId { get; set; }
public virtual User? User { get; set; }
示例
我使用名为EntityHelper 的东西来创建实体。我创建就业实体,在创建用户实体时使用它(这些都是在我调试时正确创建的)。我使用db.AddRange() 将实体添加到数据库中。
这就是它的样子。
问题
正如我之前提到的,几乎所有内容都已正确添加到数据库中。用户及其数据和就业。然而,用户中的工作集合是空的(即使我创建的用户实体有它)。我不确定这是否是 EF Core 或 XUnit 的问题,或者可能是什么问题。
其他一些可能值得了解的事实:
- 测试使用 SqlLite 内存数据库
- 它基于 DbContext
【问题讨论】:
-
嗨 Anton,由于您在数据库上下文中使用内存数据库,这似乎更像是一个集成测试,而集成测试通常不会
mock任何东西,在某种意义上您想测试代码的具体实现。当调试器抛出(我怀疑)异常时,您能否提供您收到的错误消息以及调试器的图像?如果您停止调试器,请评估DbContext.User.ToList()您会得到预期结果吗?
标签: c# mocking entity-framework-core dbcontext xunit