2011-12-16 28 views
5

Một số thử nghiệm Rspec của tôi đã thực sự thực sự lớn (2000-5000 dòng). Tôi chỉ thắc mắc nếu có ai đã từng cố gắng phá vỡ những thử nghiệm này thành nhiều file có thể đáp ứng các điều kiện sau đây:Chia nhỏ các bài kiểm tra RSpec của bạn

  • Có một cách có hệ thống các tên và đặt thử nghiệm của bạn (ví dụ phương pháp A-L gos để user_spec1.rb).
  • Bạn có thể chạy một tệp thực sự sẽ chạy các thử nghiệm khác bên trong các tệp khác.
  • Bạn vẫn có thể chạy ngữ cảnh cụ thể trong một tệp
  • và, tốt để có, RubyMine có thể chạy thử nghiệm cụ thể (và tất cả các thử nghiệm) tốt.

Còn bây giờ, tôi đã thành công trong làm

#user_spec.rb 
require 'spec_helper' 
require File.expand_path("../user_spec1.rb", __FILE__) 
include UserSpec 

#user_spec1.rb 
module UserSpec do 
    describe User do 
    .. 
    end 
end 
+0

Bạn có cân nhắc gắn thẻ cho họ thay thế không? –

+0

Xin lỗi, nhưng tôi không hoàn toàn chắc chắn ý bạn là gì khi gắn thẻ – denniss

+0

Bạn có thể gắn thẻ các thông số kỹ thuật riêng lẻ và chạy chúng cùng nhau. –

Trả lời

6

Nếu thông số kỹ thuật của bạn đang nhận được quá lớn, nó có khả năng rằng mô hình của bạn là quá lớn cũng - kể từ khi bạn sử dụng "UserSpec" ở đây, bạn có thể nói lớp người dùng của mình là "God class". Nghĩa là, nó quá nhiều.

Vì vậy, tôi sẽ chia nhỏ thành nhiều lớp nhỏ hơn, mỗi lớp có một trách nhiệm duy nhất. Sau đó, kiểm tra các lớp này một cách cô lập.

Điều bạn có thể thấy là lớp người dùng của bạn biết cách thực hiện hầu hết logic trong hệ thống của bạn - đây là một bẫy dễ dàng rơi vào, nhưng có thể tránh được nếu bạn đặt logic của mình vào một lớp học một đối số ... Ngoài ra, nếu bạn kiên định tuân theo luật của demeter (nơi mà lớp người dùng của bạn chỉ có thể chạm 1 cấp dưới nó, nhưng không phải là hai).

Đọc thêm: http://blog.rubybestpractices.com/posts/gregory/055-issue-23-solid-design.html

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