내 양식 인증이 권한없는 요청을 올바르게 리디렉션하는지 여부를 확인하는 MSpec 테스트가 있습니다. 그러나 보호 조치에 대한 테스트 호출은 인증에 걸리지 않고 곧바로 처리됩니다. 내가 읽은 바로는 사람이 대개 [인증] 태그를 사용하여 동작을 테스트하기 위해 가짜 인증을해야하므로 보호 된 동작 방법으로 바로가는 방법을 이해할 수 없습니다.MVC MSpec 테스트가 [Authorize] 속성을 사용하지 않음
누구나 도움을 주시면 큰 호응을 얻으실 수 있습니다. 이것이 MSpec을 사용하는 첫 번째 시도이며 실제로 유용해야하는 것처럼 보입니다. 작동하도록 설정할 수 없습니다.
컨트롤러 :
[Authorize]
public class HomeController : Controller
{
public ActionResult Index()
{
return View("Index", null);
}
}
테스트 :
[Subject("Login and Authentication")]
public class when_protected_page_invoked
{
private static HomeController homeController;
private static SecurityController securityController;
private static ActionResult result;
private Establish context =() =>
{
homeController = new HomeController();
securityController = new SecurityController(new SecurityService(new NHibernateRepository<User>(), new NHibernateRepository<Session>()));
};
private Because of =() => result = homeController.Index();
private It should_redirect_to_securityController =() =>
{
result.ShouldBeARedirectToRoute().And().ControllerName().ShouldEqual("Security");
};
}
나는 그것이 ViewResult 반환되고 있음을 예외와 함께 실패 순간에 테스트를 실행, 그리고 디버깅 경우 단지를 반환 때 Home.Index() 결과입니다.
인덱스 작업을 디버깅하는 경우 User.Identity.IsAuthenticated는 무엇을 반환합니까? 아마도 MSpec은 백그라운드에서 이것을 true로 설정하고 있습니다. –
HttpContext : null 사용자 : null – mckjerral
[이 질문에] (http://stackoverflow.com/questions/669175/unit-testing-asp-net-mvc-authorize-attribute- to-verify-redirect-to-login-page)에 대해서도 똑같은 문제가 있지만 NUnit을 사용하면 Authorize가 라우팅 수준에서 시작되어 컨트롤러에 직접 호출하여 도달 할 수 없음을 알 수 있습니다. 이것은 의미가 있지만, 내가 본 비트와 동의하는 것은 인증을 위조해야한다고 말합니다. – mckjerral