我見過很多類似的線程,但沒有一個能夠真正解決我的特殊情況。在ASP.NET 4.0中嘲諷HttpRequest
我在ASP.NET 4.0 Web應用程序(ASP.NET窗體,而不是MVC)中編寫單元測試。代碼中有幾個位置,我稱之爲ServerVariables
集合以調用像REMOTE_ADDR
這樣的變量。由於在執行我的代碼時,我的單元測試並沒有真正啓動HttpRequests
,像ServerVariables
是Null
,因此錯誤,當我嘗試打電話給我找到解決這個問題指的MVC HttpContext.Current.Request.ServerVariables("REMOTE_ADDR")
所有的解決方案,並讓他們承擔該HttpRequest
派生自HttpRequestBase
,它在MVC中執行,但不在ASP.NET窗體中執行。
我試過使用Moq
,但是你不能嘲笑一個密封的課程,並且HttpRequest
不幸的是沒有界面密封。
謝謝!儘管如此,我仍然有點猶豫要更改實時代碼。實時代碼目前穩定且非常複雜,但是沒有單元測試框架。我試圖慢慢地將單元測試引入到混合中,並添加一個新功能。如果我必須更改穩定的代碼以符合單元測試,那麼我擔心單元測試很難賣給我的團隊的其他人 - 即使在測試驅動的開發中,它會從一開始就這樣寫。 – Adam 2010-07-16 18:00:32
+1雖然是一個很好的答案。我仍然可能最終走上這條道路。 – Adam 2010-07-16 18:01:30
我結束了去一個不同的路線,並使用WatiN進行單元測試。 WatiN從UI層進行測試,因此不需要模擬HttpRequest。謝謝你的幫助。無論如何,我將你的答案標記爲答案,因爲它確實回答了這個問題,不管這是否是我去的方向。 – Adam 2010-07-20 19:07:28