我在我的MVC3應用程序中使用VisualStudio.TestTools
進行單元測試。該文件包含/Web.conf
自定義配置,其價值"false"
我不能用ConfigurationManager.AppSettings["DisableCheckboxes"];
在我的控制器得到:使用moq在Web.conf中模擬設置
這對生產效果很好,但不是在單元測試。該值是"null"
:
我如何使用框架起訂量在/Web.conf
嘲笑的設置?
我在我的MVC3應用程序中使用VisualStudio.TestTools
進行單元測試。該文件包含/Web.conf
自定義配置,其價值"false"
我不能用ConfigurationManager.AppSettings["DisableCheckboxes"];
在我的控制器得到:使用moq在Web.conf中模擬設置
這對生產效果很好,但不是在單元測試。該值是"null"
:
我如何使用框架起訂量在/Web.conf
嘲笑的設置?
如果你抽象配置文件讀取,並將這個抽象注入到你的類中,而不是直接使用ConfigurationManager
,那麼你最好是。然後爲了測試你可以嘲笑抽象。
創建IConfigurationReader
接口:
public interface IConfigurationReader
{
string GetConfigSetting(string settingName);
}
真正實現將使用ConfigurationManager
,但對於測試,你可以嘲笑IConfigurationReader
。
看起來有些過分,但它是一次性工作,可以在整個應用程序中重用。額外的好處是,如果有一天你決定從其他地方讀取配置設置,你只需改變實現,不要觸及你的消費者。
您可能必須將這些配置設置複製到您的測試項目的配置文件中。測試項目不會訪問該網站的'web.config'。 –
謝謝你的回答,但那並不解決問題 - 相同的行爲:null。 – Simon