Dự án hiện tại của tôi có trụ sở tại Asp .net sử dụng đáng kể các trình xử lý Http để xử lý các yêu cầu khác nhau? Vì vậy, có cách nào mà tôi có thể kiểm tra các chức năng của mỗi xử lý bằng cách sử dụng các trường hợp thử nghiệm đơn vị? Chúng tôi đang sử dụng khung Nunit và Moq để tạo điều kiện thử nghiệm đơn vị.Kiểm tra đơn vị http xử lý?
Trả lời
Bạn chắc chắn có thể, mặc dù tôi chưa tự làm "tức giận".
Sử dụng System.Net.WebClient để thực hiện các cuộc gọi HTTP với trình xử lý của bạn và đánh giá những gì sẽ trả về, điều đó sẽ cho phép bạn kiểm tra giao diện công khai của trình xử lý.
Trong ví dụ này tôi đã mã hóa cứng mục tiêu của mình và tôi đang sử dụng phương thức trên WebClient sẽ trả về một chuỗi.
WebClient cũng cung cấp cho bạn quyền truy cập vào ResponseHeaders, Encoding và các công cụ 'webby' hữu ích khác; bạn cũng có thể tải lên thông tin.
using System.Net;
namespace UnitTestHttpHandler
{
public class TestHarness
{
public static string GetString()
{
WebClient myWebClient = new WebClient();
return myWebClient.DownloadString("http://localhost/Morphfolia.Web/ContentList.ashx");
}
}
}
Sau đó bạn có thể sử dụng TestHarness gọi mục tiêu HttpHandler và xác minh các kết quả trong các thử nghiệm của bạn (hoặc sử dụng một cách tiếp cận tốt hơn để thử nghiệm của bạn nếu bạn biết một - Tôi không phải là một thử nghiệm đơn vị guru).
[TestMethod]
public void TestMethod1()
{
string x = UnitTestHttpHandler.TestHarness.GetString();
Assert.IsTrue(x.Length > 5);
}
Đây là bài viết giải thích rõ ràng về kiểm thử đơn vị cho trình xử lý http.
http://jgvimalan.wordpress.com/2011/08/30/unit-test-for-http-handler/
Bạn có thể làm thử nghiệm tích hợp các trình điều khiển bằng cách sử dụng các phương pháp được đề cập trong câu trả lời khác, để làm kiểm tra đơn vị bạn sẽ cần phải tạo ra một số giao diện và trích xuất các chức năng cốt lõi ra khỏi xử lý, cũng như tạo ra một số đối tượng giả.
Bạn sẽ không thể kiểm tra đơn vị TẤT CẢ các bộ phận của nó vì nó dựa vào tài nguyên bên ngoài (những thứ bạn sẽ chế nhạo) - nhưng tốt thôi, đó là lý do tại sao chúng tôi CÓ thử nghiệm tích hợp.
Tôi nghĩ rằng những mục blog từ một thời gian lại có liên quan:
http://www.kongsli.net/nblog/2009/05/03/aspnet-35-improving-testability-with-systemwebabstractions/
Xem ví dụ # 2 trong bài viết đầu tiên cho một ví dụ về cách đơn vị kiểm tra một HttpHandler.
Nếu bạn muốn kiểm tra thông tin liên lạc giữa các trình xử lý và giao diện người dùng web thì có, thử nghiệm tích hợp là cách để thực hiện điều đó. Để đơn vị kiểm tra logic của bạn, bạn có thể không tách logic nghiệp vụ của mình thành các lớp khác (tôi sử dụng một assembly riêng cho lớp nghiệp vụ) và thử nghiệm/thử nghiệm các lớp này thay vì ngoài lớp trình bày của bạn?
Khi bạn có lớp kinh doanh có cấu trúc (và đơn vị được kiểm tra) đã được tách khỏi lớp trình bày, trình xử lý của bạn có thể đơn giản khởi tạo các concretes của bạn và gọi các phương thức đã cung cấp. Một khi điều này được thực hiện, sau đó bạn có thể di chuyển vào thử nghiệm tích hợp như logic kinh doanh của bạn sẽ được đơn vị thử nghiệm.
Nếu bạn không chăm sóc về các xét nghiệm đơn vị và muốn một cái gì đó nhanh chóng và dơ bẩn, bạn có thể sử dụng Fiddler
nếu bạn muốn có một cách tiếp cận (thử nghiệm Unit) tích hợp nhiều hơn bạn có thể sử dụng WebRequest và WebResponse.
- 1. Máy chủ HTTP để kiểm tra đơn vị trong Delphi
- 2. Kiểm tra đơn vị các yêu cầu HTTP trong C#
- 3. DAO Kiểm tra đơn vị
- 4. Đơn vị kiểm tra TSQL
- 5. Kiểm tra đơn vị CSS
- 6. Làm thế nào để xử lý các bài kiểm tra đơn vị trong F #?
- 7. VS2010 Thử nghiệm đơn vị “Đang chờ xử lý” và không thể hoàn thành kiểm tra
- 8. Kiểm tra đơn vị xử lý với điều kiện trong thời điểm hiện tại
- 9. C++ Đơn vị kiểm tra Mã kế thừa: Cách xử lý #include?
- 10. Kiểm tra đơn vị - Những gì không để kiểm tra
- 11. Kiểm tra đơn vị CacheManager
- 12. Kiểm tra đơn vị XSLT
- 13. Kiểm tra đơn vị XQuery
- 14. Đơn vị kiểm tra RedirectToRouteResult
- 15. Đơn vị kiểm tra destructors?
- 16. Kiểm tra đơn vị JSPs
- 17. Kiểm tra đơn vị EJB
- 18. Kiểm tra đơn vị XCode
- 19. Kiểm tra đơn vị Scala
- 20. Kiểm tra Đơn vị & Log4net
- 21. Kiểm tra đơn vị sự kiện COM?
- 22. kiểm tra đơn vị trong C++
- 23. Đơn vị kiểm tra phương pháp WCF
- 24. Tư vấn kiểm tra đơn vị - cách kiểm tra đơn vị của bạn .asmx
- 25. Bài kiểm tra đơn vị cơ bản so với bài kiểm tra đơn vị
- 26. IronPython Kiểm tra đơn vị trên C#
- 27. Kiểm tra đơn vị Truy vấn RavenDb
- 28. Kiểm tra đơn vị hoặc Kiểm tra chức năng?
- 29. Thiết lập kiểm tra đơn vị Qt
- 30. Kiểm tra đơn vị là gì?
Nhưng chúng ta cần định tuyến (sử dụng tệp cấu hình) yêu cầu đến trình xử lý chính xác và máy chủ cũng cần phải chạy, phải không? Vậy làm thế nào để mô phỏng điều đó? –
Có, máy chủ web sẽ cần phải chạy. Theo như cấu hình đi, tôi không thể nói từ kinh nghiệm nhưng tôi sẽ giả sử nó sẽ được thực hiện trong một cách tương tự để xác định các thiết lập khác thông qua cấu hình khi kiểm tra đơn vị (?). Xin lỗi tôi không thể cung cấp nhiều hơn thế. –
Điều này thực sự hoạt động rất tốt, chỉ có vấn đề là bạn không thể gỡ lỗi thông qua trình xử lý đích của bạn tất nhiên. – Brent