1

MvcContrib-TestHelper를 사용하여 내 앱의 라우팅을 테스트하고 있습니다. 난 단지 HTTP POST로 제한 조치가 :HTTP POST를 통해서만 MVC 작업에 액세스 할 수 있는지 테스트하는 방법은 무엇입니까?

 
public TestController 
{ 
    [HttpPost] 
    public ActionResult Example() 
    { 
     return View(); 
    } 
} 

을 그리고 여기에 실패 테스트의 예입니다

그러나
 
[TestFixture] 
public class RoutingTests 
{ 
    [TestFixtureSetUp] 
    public void TestFixtureSetUp() 
    { 
     RouteTable.Routes.Clear(); 
     Application.RegisterRoutes(RouteTable.Routes); 
    } 

    [Test] 
    public void TestWithGet() 
    { 
     var route = "~/Test/Example".WithMethod(HttpVerbs.Get); 
     route.ShouldMapTo(r => r.Example()); 
    } 
} 

이 테스트를 통과! 이 질문이 제기 된 다른 대답없는 질문 (미안, 잘못된 링크)을 보았는데 기능이 손상된 것처럼 보입니다. POST를 통해서만이 경로에 액세스 할 수 있는지 테스트하는 더 좋은 방법은 무엇입니까?

답변

1

사용이 코드 ... 같은 테스트가 가치를 제공 할 것이라고 생각하지 말아 :

var controller = new HomeController(); 
var methodInfo = controller.GetType().GetMethod("MrthodName"); 
var attributes = methodInfo.GetCustomAttributes(typeof(ActionMethodSelectorAttribute), true).Cast<ActionMethodSelectorAttribute>().ToList(); 

속성 -이 목록은 동사에게 주석으로

+0

[HttpPost]와 [AcceptVerbs (HttpVerbs.Post)]의 차이에 관계없이이 기능이 작동합니까? – sargant

+0

그것을 확인하십시오. 나는 이것이 거의 동일하다는 것을 거의 90 % 확신하고있다. – Mediator

+0

테스트를 감안할 때, AcceptVerbsAttribute와 HttpPostAttribute가 따로있다. 리플렉션은 내가 얻는 것만큼이나 가깝습니다. 라우팅 정보를 분석하는 실제 방법에 더 가까운 것이 있으면 볼 수 있습니다. 그렇지 않은 경우 곧 답변을 받아 들일 것입니다. 감사! – sargant

2

ASP.NET MVC 프레임 워크를 테스트하려는 것 같습니다. 나는

+0

더 나은 동의입니다 – wal

+2

그는 특정 작업 만이 보장 될 수있다 게시물을 통해 가능합니다. – dove

+0

네, 맞습니다. 그러나 상황에 따라 다릅니다. 그리고 나는 대부분의 경우 그러한 테스트가 관련이 없다고 생각합니다. – CoffeeCode