Làm cách nào để tạo một yêu cầu trang cho trang .net MVC?Kiểm tra đơn vị trong asp.net MVC, làm thế nào để tôi thử một yêu cầu trang?
8
A
Trả lời
15
Sử dụng RhinoMocks:
var httpContext = MockRepository.GenerateMock<HttpContextBase>();
var httpRequest = MockRepository.GenerateMock<HttpRequestBase>();
httpContext.Expect(c => c.Request).Return(httpRequest).Repeat.Any();
... set up expectations on request...
var controller = new MyController();
controller.ControllerContext = new ControllerContext(httpContext,
new RouteData(),
controller);
...invoke action, check assertions...
httpContext.VerifyAllExpectations();
httpRequest.VerifyAllExpectations();
11
Sử dụng Moq:
var request = new Mock<HttpRequestBase>(MockBehavior.Strict);
request.Setup(x => x.ApplicationPath).Returns("/");
request.Setup(x => x.Url).Returns(new Uri("http://localhost/home"));
request.Setup(x => x.ServerVariables).Returns(new System.Collections.Specialized.NameValueCollection());
var context = new Mock<HttpContextBase>(MockBehavior.Strict);
context.SetupGet(x => x.Request).Returns(request.Object);
var controller = new YourController();
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
11
Thủ công (vì tôi ghét Mocking khuôn khổ đòi hỏi 8 dòng thiết lập cho mỗi thử nghiệm)
// in some common location, only once
public class MockHttpContext : HttpContextBase
{
public MockHttpRequest m_request = new MockHttpRequest();
public MockHttpResponse m_response = new MockHttpResponse();
public override HttpRequestBase Request
{ get { return m_request; } }
public override HttpResponseBase Response
{ get { return m_response; } }
}
public class MockHttpRequest : HttpRequestBase
{
// override whatever bits you want (eg cookies)
}
public class MockHttpResponse : HttpResponseBase
{
// override whatever bits you want (eg cookies)
}
// in your specific test
controller = new YourController {
ControllerContext = new ControllerContext { HttpContext = new MockHttpContext() }
};
Các vấn đề liên quan
- 1. ASP.NET MVC Đơn vị kiểm tra - phiên
- 2. Làm thế nào để bạn kiểm tra đơn vị hành động ASP.Net MVC JsonResult của bạn?
- 3. Kiểm tra đơn vị trong asp.net
- 4. Làm thế nào để thử một yêu cầu khi đơn vị thử nghiệm một dịch vụ trong grails
- 5. django - làm thế nào để đơn vị kiểm tra yêu cầu bài đăng bằng request.FILES
- 6. Đơn vị kiểm tra MVC với ASP.NET Dev Server
- 7. Kiểm thử đơn vị ASP.NET Windows7/IIS7
- 8. Kiểm tra đơn vị các yêu cầu HTTP trong C#
- 9. Làm thế nào tôi có thể yêu cầu giả.POST và GET params để kiểm tra đơn vị trong Flask?
- 10. Làm cách nào để tạo các lượt xem trong các thử nghiệm đơn vị asp.net-mvc?
- 11. Tôi đã tiêm HttpServletRequest vào một bean. Làm thế nào để đơn vị kiểm tra nó?
- 12. Làm thế nào để mô phỏng Request.Files [] trong lớp thử nghiệm đơn vị MVC?
- 13. Làm thế nào để kiểm tra đơn vị ValueProviderFactories trong ASP.NET MVC3?
- 14. Làm thế nào để bạn kiểm tra đơn vị?
- 15. Làm thế nào để kiểm tra tài nguyên yêu cầu hiện tại là một trang trong C# ASP.NET?
- 16. Làm thế nào để thử một yêu cầu AJAX?
- 17. kiểm tra đơn vị python cách làm thế nào để
- 18. ASP.NET - Đơn vị kiểm tra MembershipProvider
- 19. Làm thế nào để kiểm tra đơn vị một ActionResult trả về một ContentResult?
- 20. Kiểm tra đơn vị MVC 4 RedirectToAction
- 21. Làm thế nào để thử DateTime.Now trong các bài kiểm tra đơn vị?
- 22. Kiểm tra đơn vị - Làm thế nào để tiếp tục?
- 23. Tôi có thể kiểm tra đơn vị MVC UserViewControl như thế nào?
- 24. Hadoop: Làm thế nào để kiểm tra đơn vị FileSystem
- 25. ASP.NET MVC: Bộ điều khiển kiểm thử đơn vị sử dụng UrlHelper
- 26. Kiểm thử đơn vị IHttpModule
- 27. Kiểm tra đơn vị Mã ASP.NET đằng sau
- 28. Làm thế nào để kiểm tra đơn vị các lớp MVC?
- 29. Làm cách nào để thực hiện kiểm tra đơn vị để kiểm tra phương pháp kiểm tra tiêu đề yêu cầu?
- 30. Làm thế nào tôi có thể thử một yêu cầu web bên ngoài trong PHPUnit?
Tôi thích video này. Điều này dễ hiểu hơn nhiều so với chế nhạo. Bất kỳ lý do nào khiến m_request và m_response được công khai? –
vì đó là một đối tượng giả mạo được thiết kế để giúp thử nghiệm mọi thứ dễ dàng hơn. Làm cho những người tư nhân sẽ chỉ có nghĩa là nếu tôi muốn thay đổi chúng (và đôi khi bạn có thể) Tôi muốn có một tài sản, vv, vv Một số quy tắc như thực hiện ẩn đang tích cực có hại trong loại môi trường –
Tôi nhận ra lý do tại sao họ đang công khai ngay sau khi tôi đặt câu hỏi. Cả Yêu cầu và Phản hồi đều không có trình cài đặt, vì đó là cách nó nằm trong HttpContextBase. Vì vậy, nếu tôi cần phải thay đổi yêu cầu và phản hồi từ các bài kiểm tra đơn vị của tôi, tôi cần chúng công khai. –