我正在使用带有 Code First 的 Entity Framework 6,并且我想模拟我的 DbContext 以进行单元测试。因为我需要大量用于单元测试的测试数据,所以我想使用 Entity Framework Effort ( https://entityframework-effort.net/ ) 从 csv 文件中加载它们。
我没有收到任何错误,但我也没有从 csv 文件中获得任何数据。我得到的只是一个没有数据的 DbContext(代码中的 FapContext)。
你有什么建议可以解决我的问题吗?
使用 NUnit 进行单元测试:
private FapContext context;
private IUnitOfWork unitOfWork;
private IDataLoader csvLoader;
private IDataLoader dataLoader;
[SetUp]
public void SetUp()
{
this.csvLoader = new CsvDataLoader(@"C:\path\TestData\CSV-TestData");
this.dataLoader = new CachingDataLoader(this.csvLoader, false);
DbConnection connection = DbConnectionFactory.CreateTransient(this.dataLoader);
try
{
this.context = new FapContext(connection);
this.context.Database.CreateIfNotExists();
}
catch (Exception e)
{
Debug.Print(e.GetType().FullName);
throw;
}
this.unitOfWork = new UnitOfWork(this.context);
}
[Test]
public void ShouldReturnData()
{
// Arrange
List<State> states = this.context.States.ToList();
// Act
// Assert
Assert.IsNotNull(states); // passes
Assert.IsTrue(states.Count > 0); // don't pass
}
CSV 文件:
ID,StateGroupID,Name,Description,CreatedAt,ChangedAt,RowVersion
"187968CE-0489-4A57-81F4-0BECDF9CC005","5FBAD179-68F5-46D2-A0A6-82516A3F2E4D","APPROVED","Approved material",,,
"222E365D-A8D7-4DFF-8807-18EC85481FD8","AED80358-D2A3-4CC9-A7E5-EA1C8931C27A","Running",,,,
"8433F457-31F1-40D4-AF78-2058415407F7","28E828D7-6B5B-9BEC-928D-101DEB38B4C5","Pending",,,,