Tôi đang viết một số kiểm tra đơn vị cho một phương thức lấy một HttpContext làm tham số. Tôi muốn kiểm tra xem hành vi có đúng như mong đợi khi yêu cầu là POST hay không.Xây dựng một HttpContext để thử nghiệm, làm thế nào tôi có thể chỉ định HttpRequest là một POST?
Khi tạo System.Net.HttpWebRequest thật dễ dàng để đặt phương thức, nhưng tôi không thể thấy cách để chỉ định phương thức khi tạo System.Web.HttpRequest, đây là những gì được sử dụng trong HttpContext.
Bất kỳ ý tưởng nào?
Đối với ngữ cảnh, phương thức này được gọi bởi người tán thành và nó được cho là ném 405 nếu yêu cầu không phải là POST. Tôi biết rằng tôi có thể lọc các phương thức cho phép với thuộc tính động từ trong web.config, và tôi sẽ, tuy nhiên không có gì ngăn ai đó trong tương lai thay đổi thuộc tính động từ để cho phép các phương thức khác trong trường hợp này tôi muốn xử lý của chính nó.
Helper phương pháp đang được sử dụng:
private HttpContext GetHttpContext(string requestUrl)
{
var httpRequest = new HttpRequest("", requestUrl, "");
var stringWriter = new StringWriter();
var httpResponce = new HttpResponse(stringWriter);
return new HttpContext(httpRequest, httpResponce);
}
Sử dụng HttpContext.Current.Request.HttpMethod. Thông qua http://stackoverflow.com/questions/6898598/http-verb-of-current-http-context –
HttpMethod là một getter chỉ, không phải là một setter, do đó, sẽ không làm việc để thử nghiệm. – mdchris
Tôi đã chỉnh sửa tiêu đề của bạn. Vui lòng xem, "[Câu hỏi có nên bao gồm" thẻ "trong tiêu đề của họ không?] (Http://meta.stackexchange.com/questions/19190/)", trong đó sự đồng thuận là "không, họ không nên". –