【问题标题】:Can you use FakeItEasy with EF Core您可以将 FakeItEasy 与 EF Core 一起使用吗
【发布时间】:2020-09-15 20:50:34
【问题描述】:

我想知道是否可以将 FakeItEasy 与 EF Core 一起使用?我需要围绕 CRUD 操作编写一些单元测试。有人可以提供一些关于我应该使用内存数据库还是 FakeItEasy 的见解吗?对此的任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 明确的内存数据库。或者,如果您想测试一些关系数据库功能,那么您可以使用“内存中”SQLite。您不想模拟 EntityFramework,因为它会测试您的实现细节,每次您更改查询时,不改变行为,您都需要重写您的测试。
  • 从技术上讲,您可以模拟它(DbSet<T> 中的大多数方法都是虚拟的),但很难设置。在内存数据库中使用,如下所述:stackoverflow.com/a/47554912/98713

标签: .net-core in-memory-database ef-core-2.0 fakeiteasy


【解决方案1】:

你可以看看我的MockQueryable 包。它支持 FakeItEasy。

简单示例:

 //1 - create a List<T> with test items
 var users = new List<UserEntity>()
 {
   new UserEntity{LastName = "ExistLastName", DateOfBirth = DateTime.Parse("01/20/2012")},
   ...
 };
 
 //2 - build mock by extension
 var mock = users.AsQueryable().BuildMock();
 
 //3 - setup the mock as Queryable for FakeItEasy
 A.CallTo(() => userRepository.GetQueryable()).Returns(mock);

Here你可以找到更多使用MockQueryable + FakeItEasy的例子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2020-11-23
    • 1970-01-01
    • 2014-01-22
    相关资源
    最近更新 更多