gpt4 book ai didi

asp.net-mvc - 如何使用 Rhino.Mocks 来模拟 ControllerContext

转载 作者:行者123 更新时间:2023-12-02 12:19:19 26 4
gpt4 key购买 nike

我正在尝试使用 Rhino.Mocks 来模拟 ControllerContext 对象,以访问 Controller 单元中的用户、请求、响应和 session 等运行时对象测试。我编写了以下方法来尝试模拟 Controller 。

private TestController CreateTestControllerAs(string userName)
{
var mock = MockRepository.GenerateStub<ControllerContext>();
mock.Stub(con =>
con.HttpContext.User.Identity.Name).Return(userName);
mock.Stub(con =>
con.HttpContext.Request.IsAuthenticated).Return(true);

var controller = CreateTestController(); // left out of example for brevity
controller.ControllerContext = mock;

return controller;
}

但是,我模拟的 ControllerContext 的 HttpContext 为 null,并且我尝试访问 HttpContext.User 等会导致 System.NullReferenceException .

我的 mock 做错了什么?

最佳答案

我强烈建议您查看MVCContrib.TestHelper它使用 Rhino.Mocks 并提供了一种测试 Controller 的优雅方法。您的测试可能如下所示:

[TestClass]
public class UsersControllerTests : TestControllerBuilder
{
[TestMethod]
public void UsersController_Index()
{
// arrange
// TODO : this initialization part should be externalized
// so that it can be reused by other tests
var sut = new HomeController();
this.InitializeController(sut);
// At this point sut.Request, sut.Response, sut.Session, ... are
// stubed objects on which you could define expectations.

// act
var actual = sut.Index();

// assert
actual.AssertViewRendered();
}
}

这是一个 unit test对于controller这是 sample ASP.NET MVC application 的一部分我写的。

关于asp.net-mvc - 如何使用 Rhino.Mocks 来模拟 ControllerContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3080814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com