我在基本控制器类上设置了以下HandleUnknownAction:
protected override void HandleUnknownAction(string action)
{
Response.Redirect("/");
}
如何进行单元测试?还有一点,这种处理未知动作的方法正确吗?似乎调用RedirectToAction()会更正确,但是HandleUnknownAction没有返回值。
我可以测试的范围是:
[Test]
public void TestHandleUnknownAction()
{
ctroler.ActionInvoker.InvokeAction(ctroler.ControllerContext, "unknown");
}
我被卡住了。
最佳答案
我认为没有必要测试控制器缺少动作时是否调用了HandleUnknownAction。我们相信可以处理该框架。因此,我们可以通过直接使用模拟框架Moq调用HandleUnknownAction来测试实现。 Rhino Mocks也应该可行。
public void TestHandleUnknownAction()
{
Mock<ControllerContext> cc = new Mock<ControllerContext>
(MockBehavior.Strict);
cc.Expect(c => c.HttpContext.Response.Redirect("/"));
TestHelperController controller = new TestHelperController();
controller.ControllerContext = cc.Object;
controller.InvokeUnknownAction("test");
}
TestHelperController使HandleUnknownAction可访问的地方:
public class TestHelperController : RealController
{
public void InvokeUnknownAction(string action)
{
this.HandleUnknownAction(action);
}
}
关于asp.net-mvc - 如何对ASP.NET MVC Controller 的HandleUnknownAction()进行单元测试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/521107/