[英]Unit/integration testing EF with Effort - Connectionstring not found
我最近开始使用内存数据库 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 is not found 参数名称:entityConnectionString ParamName=entityConnectionString
源=努力堆栈跟踪:在Effort.EntityConnectionFactory.GetFullEntityConnectionString(字符串entityConnectionString)在Effort.EntityConnectionFactory.GetEffortCompatibleMetadataWorkspace在Effort.EntityConnectionFactory.CreateTransient(字符串&entityConnectionString)(字符串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
}
我知道我参加这个聚会迟到了,但他们的帖子似乎回答了这个问题。 我找了半天。 希望张贴在这里会传播这个词。
https://github.com/zzzprojects/EntityFramework-Effort/issues/99
归功于上述原始帖子的作者。
EntityFrameworkEffortManager.ContextFactory = context => new MyContext();
var dataLoader = new EntityDataLoader();
DbConnection dbConnection = DbConnectionFactory.CreateTransient(dataLoader);
var effortContext = new MyContext(dbConnection);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.