[英]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.