Piszę niektóre testy jednostkowe dla metody, która ma HttpContext jako parametr. Chcę przetestować, że zachowanie jest zgodne z oczekiwaniami, gdy żądanie jest POST.Budując HttpContext do testowania, jak mogę określić HttpRequest jest POST?
Podczas tworzenia System.Net.HttpWebRequest można łatwo ustawić metodę, ale nie widzę sposobu, aby określić metodę podczas tworzenia System.Web.HttpRequest, który jest używany w HttpContext.
Wszelkie pomysły?
Dla kontekście metoda jest wywoływana przez HttpHandler i przypuszcza się, aby rzucić 405, jeżeli wniosek nie jest POST. Wiem, że mogę filtrować dozwolone metody za pomocą właściwości Verbs w pliku web.config, a jednak nie będę w stanie powstrzymać nikogo w przyszłości przed zmianą właściwości czasowników, aby umożliwić inne metody, w którym to przypadku chcę, aby opiekun się troszczył z tego samego.
metoda Helper obecnie w użyciu:
private HttpContext GetHttpContext(string requestUrl)
{
var httpRequest = new HttpRequest("", requestUrl, "");
var stringWriter = new StringWriter();
var httpResponce = new HttpResponse(stringWriter);
return new HttpContext(httpRequest, httpResponce);
}
Użyj HttpContext.Current.Request.HttpMethod. Via http://stackoverflow.com/questions/6898598/http-verb-of-current-http-context –
HttpMethod jest tylko programem pobierającym, a nie ustawiaczem, więc nie będzie działał do testowania. – mdchris
Zmieniłem twój tytuł. Zobacz, "[Czy w tytułach pytania powinny znaleźć się" znaczniki "?] (Http://meta.stackexchange.com/questions/19190/)", gdzie konsensus brzmi "nie, nie powinien". –