我周圍搜索,沒有答案爲我工作。我有2個ASP.NET項目,其中一個是我的項目,另一個是包含單元測試的項目。C#在單元測試中注入ConfigurationManager
# Projects
Project.Core
...
secretConnectionStrings.config
Web.config
Project.Tests
在Project.Core
,我有一個請求都連接字符串(從secretConnectionStrings.config
和應用程序從web.config文件中的設置。執行它自己的方法,正確的價值觀都來自這些配置文件的拉不過,我想我的單元測試中測試這
我的測試看起來像這樣(內Project.Tests
):
[TestClass]
public class TestUserController
{
[TestMethod]
public void Post_ShouldReturnNewUser()
{
var controller = new UserController();
var result = controller.Post() as User;
Assert.AreNotEqual(result, null);
}
}
線它炸彈出來是這樣的
string cacheConnection = ConfigurationManager.ConnectionStrings["RedisCache"].ConnectionString;
System.NullReferenceException:對象引用未設置到對象
我已經嘗試添加web.config
和secretConnectionStrings.config
在我Project.Tests
解決方案的鏈接的一個實例。這沒有奏效,我不想接口到我的web.config(我想要的值,因爲它們保存在Project.Core
)。有沒有一種解決方案,我可以從Project.Core
的web.config中將值抽取到我的單元測試中?
你的單元測試是在單獨的項目。您必須在該項目中添加連接字符串。 – kat1330
有沒有辦法訴諸於此?我不想通過爲2個項目維護兩組配置文件來引入另一個可能失敗的問題 – Zac
您是否考慮過爲ConfigurationManager創建一個包裝類,在真實代碼中使用包裝,然後在單元測試中僞造包裝? – lilactiger89