Ich schreibe einige Komponententests für eine Methode, die einen HttpContext als Parameter verwendet. Ich möchte testen, ob das Verhalten wie erwartet ist, wenn die Anfrage ein POST ist.Erstellen eines HttpContext zum Testen, wie kann ich die HttpRequest ist ein POST angeben?
Beim Erstellen einer System.Net.HttpWebRequest ist es einfach, die Methode festzulegen, aber ich kann keine Methode zum Angeben der Methode beim Erstellen einer System.Web.HttpRequest sehen, die in HttpContext verwendet wird.
Irgendwelche Ideen?
Für Kontext wird die Methode von einem httphandler aufgerufen und es soll eine 405 werfen, wenn die Anfrage kein POST ist. Ich weiß, dass ich die zulässigen Methoden mit der Verben-Eigenschaft in der web.config filtern kann, und ich werde, aber nichts in der Zukunft daran hindern, die Verben-Eigenschaft zu ändern, um andere Methoden zu ermöglichen, in welchem Fall möchte ich, dass der Handler darauf aufpasst von ihm selbst.
Helper-Methode derzeit im Einsatz:
private HttpContext GetHttpContext(string requestUrl)
{
var httpRequest = new HttpRequest("", requestUrl, "");
var stringWriter = new StringWriter();
var httpResponce = new HttpResponse(stringWriter);
return new HttpContext(httpRequest, httpResponce);
}
Verwenden Sie HttpContext.Current.Request.HttpMethod. Via http://stackoverflow.com/questions/6898598/http-verb-of-current-http-context –
HttpMethod ist nur ein Getter, kein Setter, so wird nicht zum Testen funktionieren. – mdchris
Ich habe deinen Titel bearbeitet. Bitte lesen Sie "[Sollten die Fragen" Tags "in ihren Titeln enthalten?] (Http://meta.stackexchange.com/questions/19190/)", wobei der Konsens "nein, sie sollten nicht" lautet. –