我最近开始使用内存数据库 Effort 对我的实体框架实现进行单元测试。
一切正常,除非我尝试使用 CSV 数据加载器将 CSV 文件中的数据加载到数据库中。
关于如何配置 csvdataloader 的文档似乎很少/不足。
这是我编写的 NUnit 3.0 单元测试之一:
[Test]
public void GetBudgetIncomeItems_MultipleValidItems_ReturnList()
{
//Prepare and load data
var dataLoader = new CsvDataLoader(@"<DirectoryOfUnitTestProject>\Data");
var entityConnection = Effort.EntityConnectionFactory.CreateTransient("name=<NameOfMyCSVFileWithoutCSVExtension/DatabaseName>", dataLoader);
_serviceContext = new ServiceContext(entityConnection);
//Execute test
var items = _query.GetBudgetIncomeItems(new Application {Id = 3});
//Check results
//Some assertions
}
上线抛出异常:
Effort.EntityConnectionFactory.CreateTransient("name=<NameOfMyCSVFileWithoutCSVExtension/DatabaseName>", dataLoader);
异常详情:
System.ArgumentException 未被用户代码处理
HResult=-2147024809 Message=Connectionstring 未找到 参数名称:entityConnectionString ParamName=entityConnectionString
Source=Effort StackTrace:在 Effort.EntityConnectionFactory.GetFullEntityConnectionString(String entityConnectionString) 在 Effort.EntityConnectionFactory.GetEffortCompatibleMetadataWorkspace(String& entityConnectionString)在 Effort.EntityConnectionFactory.CreateTransient(String entityConnectionString, IDataLoader dataLoader) 在 Infrastructure.EF6.UnitTests.PacsQueryTests`1.GetBudgetIncomeItems_MultipleValidItems_ReturnList() 在 \PacsQueryTests.cs:line 36 InnerException:
任何帮助,将不胜感激...
更新
根据下面@Evk 的评论,首先使用代码时,您必须使用 DbConnection 和 DbConnectionFactory 类,而不是 EntityConnection 和 EntityConnectionFactory 类。
我更新的代码不会引发任何错误,如下所示:
[Test]
public void GetBudgetIncomeItems_MultipleValidItems_ReturnList()
{
//Prepare and load data
Effort.DataLoaders.IDataLoader csvDataLoader = new Effort.DataLoaders.CsvDataLoader(@"<DirectoryOfUnitTestProject>\Data");
var dataLoader = new Effort.DataLoaders.CachingDataLoader(csvDataLoader,false);
DbConnection dbConnection = Effort.DbConnectionFactory.CreateTransient(dataLoader);
_serviceContext = new ServiceContext(dbConnection);
//Execute test
var items = _query.GetBudgetIncomeItems(new Application {Id = 3});
//Check results
//Some assertions
}