Jim*_*Aho 5 c# unit-testing entity-framework mocking
在Entity Framework中,您可以通过在实际类实体中使用数据注释来配置实体之间的关系:
public class Entity
{
[Key, Column(Order = 0)]
public Guid PartOfPrimaryKey { get; set; }
[Key, Column(Order = 1)]
public Guid AlsoPartOfPrimaryKey { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
或者使用流畅的API配置
modelBuilder.Entity<Entity>()
.HasKey(k => new { k.PartOfPrimaryKey, k.AlsoPartOfPrimaryKey });
Run Code Online (Sandbox Code Playgroud)
假设您已经使用了流畅的API配置方法,那么如何在模拟(使用Moq)DbContext进行单元测试时确保执行配置?
当我嘲笑该DbContext方法OnModelCreating没有被执行.
下面是如何使用模拟框架测试应用程序的说明,但它没有解释他们如何通过"配置"实体来解决问题.我发现的其他帖子也没有解决这个问题.我想有一些我想念的简单.
旁注:我也知道,对你的DbContext进行单元测试可能不是一个好主意,因为你将在测试中使用LINQ to Objects而在生产中使用LINQ.但是,我仍然认为我的问题有答案.
更新:如果我使用数据注释,它可以正常工作.
我永远不会嘲笑 ORM。我更喜欢创建实现接口(例如存储库)的中间类并模拟该接口。不过,让我们看看我能为您做些什么:
模拟 DbContext 进行单元测试并与 Fluent API、注释等配合使用的一个好方法是使用内存数据库。即使它是一个数据库,对于单元测试来说仍然足够快。它还允许您以透明的方式模拟插入读取或插入更新读取序列。
请参阅此问答(不要将接受的答案视为最好的答案,因为它不是):
| 归档时间: |
|
| 查看次数: |
1246 次 |
| 最近记录: |