使用 RhinoMocks 模拟密封 Class
Mocking Sealed Class with RhinoMocks
我是 TDD 的新手,我正在尝试在 MVC 应用程序中模拟 HttpContextBase。我还需要模拟 Response 属性 和它的 HttpCookieCollection。
虽然 HttpCookieCollection class 是密封的,但 RhinoMocks 说它不能模拟密封 classes.
关于我应该如何解决这个问题的任何建议。
我的测试如下:
[TestMethod]
public void CreateSignInTicketCreateTempCookie()
{
const string email = "dave@somewhere.co.uk";
var mockHttpContextBase = MockRepository.GenerateMock<HttpContextBase>();
var response = MockRepository.GenerateMock<HttpResponseBase>();
var mockUserRepository = MockRepository.GenerateStub<IUserRepository>();
var cookieCollection = MockRepository.GenerateStub<HttpCookieCollection>();
mockHttpContextBase.Stub(x => x.Response).Return(response);
response.Stub(x => x.Cookies).Return(cookieCollection);
var webAuth = new WebAuthenticator(mockUserRepository);
webAuth.CreateSignInTicket(mockHttpContextBase, email);
Assert.IsTrue(mockHttpContextBase.Response.Cookies.Count == 1);
}
我想说嘲笑 HttpCookieCollection
有点过头了 - 这只是一种存储 cookie 的方式 - 你不会嘲笑 IList<Cookie>
吧?
干脆
response.Stub(x => x.Cookies).Return(new HttpCookieCollection());
或类似的(没有使用 Rhino Mocks,所以不确定这是否完全正确)。
我是 TDD 的新手,我正在尝试在 MVC 应用程序中模拟 HttpContextBase。我还需要模拟 Response 属性 和它的 HttpCookieCollection。
虽然 HttpCookieCollection class 是密封的,但 RhinoMocks 说它不能模拟密封 classes.
关于我应该如何解决这个问题的任何建议。
我的测试如下:
[TestMethod]
public void CreateSignInTicketCreateTempCookie()
{
const string email = "dave@somewhere.co.uk";
var mockHttpContextBase = MockRepository.GenerateMock<HttpContextBase>();
var response = MockRepository.GenerateMock<HttpResponseBase>();
var mockUserRepository = MockRepository.GenerateStub<IUserRepository>();
var cookieCollection = MockRepository.GenerateStub<HttpCookieCollection>();
mockHttpContextBase.Stub(x => x.Response).Return(response);
response.Stub(x => x.Cookies).Return(cookieCollection);
var webAuth = new WebAuthenticator(mockUserRepository);
webAuth.CreateSignInTicket(mockHttpContextBase, email);
Assert.IsTrue(mockHttpContextBase.Response.Cookies.Count == 1);
}
我想说嘲笑 HttpCookieCollection
有点过头了 - 这只是一种存储 cookie 的方式 - 你不会嘲笑 IList<Cookie>
吧?
干脆
response.Stub(x => x.Cookies).Return(new HttpCookieCollection());
或类似的(没有使用 Rhino Mocks,所以不确定这是否完全正确)。