我有一個asp.net MVC 3項目當我運行一些舊的單元測試,他們現在的「響應」死因爲它是空它在我的控制器如何在Moq中模擬Response.Cookies.Add()?
Response.Cookies.Add()
之一。我不知道如何嘲笑它來解決這個問題。
我在這裏看到了幾個帖子,但沒有一個解決方案似乎工作,沒有人談論「餅乾」。
我有一個asp.net MVC 3項目當我運行一些舊的單元測試,他們現在的「響應」死因爲它是空它在我的控制器如何在Moq中模擬Response.Cookies.Add()?
Response.Cookies.Add()
之一。我不知道如何嘲笑它來解決這個問題。
我在這裏看到了幾個帖子,但沒有一個解決方案似乎工作,沒有人談論「餅乾」。
創建課程例如其中涵蓋了這個靜態功能。在代碼中,您將此類添加爲下一個依賴項,並將調用例如responseProvider.AddCookie()
。在測試中,您可以使用模擬對象來獲取此ResponseProvider
。
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;
'Response'屬性是隻讀的。你需要模擬'ControllerContext'而不是。看看[這個答案](http://stackoverflow.com/a/18101855/5844190) –