Hãy tha thứ cho tôi vì thiếu kiến thức về Rails, và cho bạn biết những gì bạn đã biết về đường ray, nhưng tôi hy vọng sẽ đưa mọi thứ vào một định dạng so sánh cho người dùng khác.
Đường ray có 3 loại kiểm tra Đơn vị, Chức năng và Tích hợp.
Unit Tests thử nghiệm mô hình của bạn
chức năng thử nghiệm về điều khiển của bạn
thử nghiệm tích hợp để thử nghiệm các dòng chảy giữa điều khiển Actions
mô hình này dường như được dạy ngay từ đầu với đường ray.
Tuy nhiên trong thế giới .NET MVC, các phương pháp thử nghiệm không được trình bày giống như chúng ở trong Rails.
Nhiều nhà phát triển sẽ viết Bài kiểm tra đơn vị trên bộ điều khiển của họ theo cách bạn viết Bài kiểm tra đơn vị trên Mô hình của bạn trong đường ray. Về cơ bản, bạn gọi một phương thức (Controller Action) và lấy một đối tượng trở lại từ phương thức. Sau đó bạn có thể khẳng định nó có các giá trị bạn mong đợi. Làm điều này là một nỗi đau ở mông bởi vì bạn phải chế nhạo rất nhiều crap (HttpContext vv). Thêm vào đó, nó không phải là một thử nghiệm chức năng. Bạn chỉ đang thử nghiệm một phương pháp trái ngược với kiểm tra chức năng của ứng dụng.
Trong Rails bạn không viết một bài kiểm tra đơn vị trên bộ điều khiển của bạn, bạn đang thực sự thực hiện một yêu cầu web và bạn nhận được một phản ứng web. Bạn có thể kiểm tra mã trạng thái, cookie, v.v. Bạn đang thử nghiệm hệ thống từ đầu đến cuối.
Có một số cách bạn có thể thực hiện việc này.NET MVC
1) Steven Sanderson có một công cụ nhỏ để trợ giúp điều này.
http://blog.stevensanderson.com/2009/06/11/integration-testing-your-aspnet-mvc-application/
Khi tôi lần đầu tiên nhìn thấy điều này và bắt đầu sử dụng nó, tôi nghĩ rằng nó là tuyệt vời, nhưng tôi chạy vào vấn đề.
2) RestSharp + NUnit - Đây là tùy chọn hiện tại của tôi để thực hiện các loại thử nghiệm này. Nó cho phép bạn đặt một yêu cầu web với nhau và nhận được một phản ứng khá dễ dàng. Với một vài phương pháp chung bạn có thể di chuyển khá nhanh với restsharp. NUnit sẽ cung cấp cho bạn các xác nhận bạn cần. Tôi chỉ cần thực hiện yêu cầu đối với máy chủ IIS cục bộ của tôi và xác nhận các mục khác nhau mà tôi mong đợi trong phản hồi. Bạn sẽ không thực sự có thể kiểm tra mô hình nào được gán cho khung nhìn như bạn có thể trong đường ray nhưng đó không phải là vấn đề đối với tôi.
Nếu bạn quen với RSpec thì bạn có thể lấy SpecFlow tương tự.
Đường ray xây dựng thử nghiệm ngay trong khuôn khổ và đó là công dân hạng nhất. Nó quá xấu nó không phải là cách này trong NET MVC.
Hy vọng điều đó sẽ hữu ích.
Hành động của bộ điều khiển chỉ đơn giản là phương pháp và có thể được kiểm tra như vậy (sử dụng giả mạo/chế nhạo để cách ly). Có điều gì đặc biệt hơn đối với thử nghiệm chức năng hơn mẫu Arrange, Act, Assert cho từng điều kiện và cung cấp các trường hợp cụ thể của các lớp để ngăn cách ly và kiểm tra toàn bộ ứng dụng không? – StuperUser
Một phần lý do có thể là thuật ngữ. Trong thế giới Rails chúng ta nói về các bài kiểm tra chức năng, nhưng chúng tôi thực sự có nghĩa là các bài kiểm tra đơn vị cho các bộ điều khiển của chúng ta. Từ những gì tôi đã thấy hầu hết các lập trình viên Rails trộn các bài kiểm tra đơn vị thực sự (chỉ kiểm tra mã) và các bài kiểm tra chức năng (bao gồm cả các phụ thuộc bên ngoài như một cơ sở dữ liệu) với nhau. Cộng đồng .NET dường như theo dõi những người đó chặt chẽ hơn. Roy Osherove có một cuốn sách tốt về thử nghiệm trong .NET http://artofunittesting.com/ –