Tôi có bộ điều khiển trong MVC3 cần trả lại mã phản hồi 500 nếu có sự cố. Tôi đang làm điều này bằng cách trả về một đối tượng xem và thiết lập mã phản hồi http bằng 500 (tôi đã kiểm tra điều này trong firebug và tất cả đều hoạt động tốt).Mã phản hồi thử nghiệm đơn vị MVC3
public ActionResult http500()
{
ControllerContext.HttpContext.Response.StatusCode = 500;
ControllerContext.HttpContext.Response.StatusDescription = "An error occurred whilst processing your request.";
return View();
}
Vấn đề bây giờ là tôi cần có thể viết kiểm tra đơn vị kiểm tra mã phản hồi. Tôi đã thử truy cập mã phản hồi theo nhiều cách khác nhau thông qua đối tượng ViewResult và ngữ cảnh Controller.
Cả hai cách đều không cho tôi mã phản hồi mà tôi đã đặt trong bộ điều khiển.
[TestMethod()]
public void http500Test()
{
var controller = new ErrorController();
controller.ControllerContext = new ControllerContext(FakeHttpObject(), new RouteData(), controller);
ViewResult actual = controller.http500() as ViewResult;
Assert.AreEqual(controller.ControllerContext.HttpContext.Response.StatusCode, 500);
}
Tôi làm cách nào để nhận mã phản hồi 500 từ bộ điều khiển hoặc điều này là thử nghiệm tích hợp hơn.
Tôi thích cách tiếp cận này, câu hỏi nhanh chóng, nếu một hành động điều khiển trả về cả mã trạng thái và chế độ xem với mô hình, có cảm giác hay không cách tốt nhất để bắt chước cả đáp ứng mã trạng thái và kết quả khung nhìn/mô hình? Tôi đang đấu tranh để nghĩ ra một lựa chọn hợp lý. – dougajmcdonald
câu hỏi hay @dougajmcdonald. bạn có nhận được câu trả lời không? – richardwhatever