2013-10-08 200 views
1

我有一個asp.net MVC 3項目當我運行一些舊的單元測試,他們現在的「響應」死因爲它是空它在我的控制器如何在Moq中模擬Response.Cookies.Add()?

Response.Cookies.Add() 

之一。我不知道如何嘲笑它來解決這個問題。

我在這裏看到了幾個帖子,但沒有一個解決方案似乎工作,沒有人談論「餅乾」。

回答

1

創建課程例如其中涵蓋了這個靜態功能。在代碼中,您將此類添加爲下一個依賴項,並將調用例如responseProvider.AddCookie()。在測試中,您可以使用模擬對象來獲取此ResponseProvider

2
var responseCookies = new HttpCookieCollection(); 
var mockResponse = Mock.Of<HttpResponseBase>(r => r.Cookies == responseCookies); 
//you can use new Mock<>, and the set it up as well, but for simple setups I prefer the above syntax 

myTestController.Response = mockResponse; 
+1

'Response'屬性是隻讀的。你需要模擬'ControllerContext'而不是。看看[這個答案](http://stackoverflow.com/a/18101855/5844190) –