ahs*_*ele 4 tdd asp.net-mvc unit-testing controller rhino-mocks
我正在尝试使用Rhino.Mocks模拟ControllerContext对象来访问我的控制器单元测试中的用户,请求,响应和会话等运行时对象.我写了下面的方法试图模拟一个控制器.
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;
}
Run Code Online (Sandbox Code Playgroud)
但是,HttpContext我的模拟ControllerContext是空的,我试图访问HttpContext.User等导致a System.NullReferenceException.
我的嘲笑我做错了什么?
我强烈建议您查看MVCContrib.TestHelper,它使用Rhino.Mocks并提供了一种优雅的方式来测试您的控制器.以下是您的测试结果:
[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();
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个控制器的单元测试,它是我编写的示例ASP.NET MVC应用程序的一部分.
| 归档时间: |
|
| 查看次数: |
4235 次 |
| 最近记录: |