2013-02-04 42 views
6

Tôi vừa hoàn thành việc viết một kết hợp chi tiết rspec capybara và kiểm tra đơn vị cho ứng dụng Rails, bao gồm việc đăng nhập Omniauth (twitter), điền vào biểu mẫu, xác thực dữ liệu, v.v. có một nhu cầu để viết một bộ điều khiển riêng biệt hoặc kiểm tra chức năng.Rails kiểm tra trình điều khiển rspec và kiểm tra tích hợp

Sẽ đánh giá cao đầu vào của bạn và bất kỳ liên kết đến các bài đọc thêm, vv

Trả lời

6

Cá nhân, tôi nghĩ rằng nếu yêu cầu của bạn (tích hợp) spec được thực hiện tất cả các đường dẫn mã bạn đang bao phủ. Ryan Bates có một Railscast tuyệt vời về cách anh ta kiểm tra ở đây: http://railscasts.com/episodes/275-how-i-test?autoplay=true và khoảng 5:05 trong anh ta nói một điều tương tự. Giống như bạn, tôi muốn viết các bài kiểm tra tích hợp hơn là các thông số của bộ điều khiển. Hầu hết các bộ điều khiển thời gian chỉ đơn giản là hoạt động loại CRUD phía trước (đặc biệt nếu bạn cẩn thận về việc giữ logic miền ra khỏi bộ điều khiển), vì vậy tất cả những gì bạn đang thử nghiệm là giàn giáo.

+0

Tôi đánh giá cao ý kiến ​​của bạn. – user937531

10

Tôi sẽ chơi chủ trương của quỷ ở đây, vì tôi biết tôi có thể là người thiểu số với ý kiến ​​này: Tôi thực sự thích làm kiểm tra bộ điều khiển cực kỳ kỹ lưỡng. Một vài lý do:

1) Tôi thấy dễ dàng hơn để kiểm tra một cách có hệ thống mọi đường dẫn và kết quả ở cấp bộ điều khiển hơn mức thử nghiệm tích hợp. Bài kiểm tra tích hợp của tôi chủ yếu chỉ là đường dẫn hạnh phúc và một số đường dẫn lỗi phổ biến hơn.

2) Rất nhiều sự cố bảo mật tiềm ẩn xảy ra ở cấp bộ điều khiển. Kiểm tra kỹ lưỡng giúp tôi đảm bảo rằng không có gì độc hại có thể đi qua đến logic mô hình của tôi.

3) Đây là chủ quan, nhưng nó thực sự buộc tôi phải suy nghĩ về một số đường dẫn dài mà ứng dụng của tôi có thể trải qua. Điều gì sẽ xảy ra nếu ai đó cố gắng mã thông báo đặt lại mật khẩu không hợp lệ vào URL? Kiểm tra bộ điều khiển đảm bảo rằng tôi xem xét tất cả các tùy chọn.

4) Không giống như các bài kiểm tra tích hợp, chúng khá thẳng về phía trước để kiểm tra. Mỗi hành động chỉ là một phương pháp ruby!

Các vấn đề liên quan