2012-12-10 48 views
3

我想單元測試我的控制器,但在我的Global.asax.cs文件中,我必須註冊諸如JSON格式器,自定義標題和AutoMapper映射之類的東西。由於VS單元測試功能是通過DLL而不是API測試控制器,所以HttpApplication不會被創建,並且很多我的代碼無法測試。我怎樣才能解決這個問題?如何使用全局配置單元測試MVC/WebAPI

什麼是測試JsonFormatter輸出的最簡單方法,因爲那不是控制器的真正部分,但也可能是異常的來源?

回答

0

要對控制器進行單元測試,我只需在我的測試套件中引用API DLL並直接運行這些方法。

要做更多的集成測試,確保您的路由和映射按預期工作,我在測試類中爲WebApi創建一個HttpClient,並查看響應。
下面的文章給出瞭如何從.NET客戶端調用的WebAPI功能很好的概述: http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client

+2

我遇到的問題是我想要使用AutoMapper,它是在Application_Start中配置的,如果您沒有在ASP.NET應用程序的上下文中運行,那麼它將不會執行。 –

2

我有同樣的問題。 對於autoMaopper我跑我的MapperConfig.Initialize();在我的單元測試的設置方法(即使用NUnit)

我也打電話給 「WebApiConfig.Register(GlobalConfiguration.Configuration);」在我的設置方法 中,但在我的控制器中對Configuration.Services.GetTraceWriter()的調用返回空引用異常。所以我不能幫助那個。

+0

控制器中的Configuration屬性在構造函數中不可訪問,因爲它是在創建控制器對象後設置的。但它可以通過操作方法訪問。嘗試將您的調用移動到Configuration.Services.GetTraceWriter()到一個方法並從構造函數中移出。 – CodeThug

相關問題