如何在Moq中模拟出Response.Cookies.Add()?

时间:2013-10-08 17:00:06

标签: asp.net-mvc unit-testing cookies nunit moq

我有一个asp.net mvc 3项目,它有一个控制器

Response.Cookies.Add()

当我运行一些旧的单元测试时,它们现在死于“响应”,因为它为空。我不知道如何模拟它来解决这个问题。

我在这里看到了几个帖子,但没有一个解决方案似乎有效,也没有人谈论“Cookies”。

2 个答案:

答案 0 :(得分: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 :(得分:1)

创建类,例如ResponseProvider涵盖此静态功能。在代码中,您将此类添加为下一个依赖项,而不是调用例如responseProvider.AddCookie()。在测试中,您可以对此ResponseProvider使用模拟对象。