2014-03-26 346 views
2

我正在嘗試關注Jorge Lusar's suggestion on unit testing Umbraco。我無法使GetRoutingContext方法工作,因爲Umbraco.Web.Routing.UrlProvider構造函數獲取空引用異常(我之前已下載了umbraco 7.0.4安裝並編譯了Umbraco.Tests.dll)。當我退出選項時,我決定下載一個Umbraco的新副本,編譯並運行一個將執行UrlProvider構造函數的測試。令我驚訝的是,我在那裏得到了空引用異常,顯然,這個bug與我的解決方案無關,而是Umbraco。Umbraco單元測試失敗

這些圖像不言而喻。任何人都可以幫助這個嗎?這真的是一個錯誤,或者我可以在這裏做些什麼?

Null reference exception in UrlProvider constructor

Umbraco configuration settings missing?

回答

1

解決該問題的方法是將配置設置(Umbraco解決方案的UnitTests項目中的配置設置)複製到我的測試項目中。

Umbraco依賴於配置文件。對於單元測試並不理想,但它工作。

這裏解釋了how to stub Umbraco dependencies

0

檢查過的電流V7網站,我一直工作在一個web.config中,umbracoConfiguration /設置部分是Umbraco.Core.Configuration.UmbracoSettings.UmbracoSettingsSection類型。

你做錯的另一件事是使用as IUmbracoSettingsSection。這意味着如果轉換失敗,你返回一個空對象,而不是一個例外,告訴你轉換失敗 - 它會默默地失敗。這是更好地做:

var umbracoSettings = (IUmbracoSettingsSection)ConfigurationManager.GetSection("umbracoConfiguration/settings"); 

如前所述,我認爲你的基本類型是錯誤的,你其實應該使用:

var umbracoSettings = (Umbraco.Core.Configuration.UmbracoSettings.UmbracoSettingsSection)ConfigurationManager.GetSection("umbracoConfiguration/settings"); 

這應該投的部分爲正確的類型爲您服務。

+0

您錯誤地閱讀了這個問題,因爲我在代碼中沒有對錯,因爲它是Umbraco源代碼。 –

+0

我現在看到 - 我的歉意!我以爲你試圖加載你自己的配置設置來測試它們。 –

+0

當然不用擔心 –