簡體   English   中英

使用 Effort 進行單元/集成測試 EF - 未找到連接字符串

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM