2008-10-17 27 views
15

Có một tá plugin Rails có mục tiêu là thay thế đồ đạc trong thử nghiệm. Dưới đây là một vài tôi có thể nghĩ:Plugin thay thế lịch thi đấu ưa thích trong Rails?

  • cố thay thế
  • nhà máy cô gái
  • nhà máy và công nhân
  • ray kịch bản
  • cố-tình huống
  • đối tượng cha

Có lẽ có những người khác. Bạn thích loại plugin nào hơn và tại sao?

Trả lời

6

Cá nhân tôi sử dụng Faker với một lớp Nhà máy tùy chỉnh. Điều này cho phép tôi tạo ra các nhà máy của tôi, và cư trú các trường hợp được tạo ra với dữ liệu không tĩnh.

# spec/factory.rb 
module Factory 
    def self.create_offer(options={}) 
    Offer.create({ 
     :code => Faker::Lorem.words(1), 
     :expires_on => Time.now + (rand(30) + 1).day 
    }.merge(options)) 
    end 
end 


# spec_helper.rb 
require 'faker' 
require 'spec/factory' 


# In the specs 
@offer = Factory.create_offer(:code => 'TESTING') 
3

+1 nhà máy cô gái

+0

đã bỏ phiếu cho "cô gái" – DFectuoso

3

Chúng tôi chỉ mới bắt đầu sử dụng Factory Girl cho các dự án của chúng tôi. Cách làm việc của nó không khác mấy so với giải pháp trồng tại nhà của chúng tôi nên nó hoạt động tốt cho chúng tôi.

4

Tôi sẽ bênh vực cho Fixture Replacement 2. Các thuộc tính mô hình mặc định (không quan tâm) của bạn được lưu trữ tất cả ở một nơi, db/example_data.rb và cung cấp các đối tượng hợp lệ nhanh. Bất kỳ thuộc tính nào bạn chỉ định khi tạo ghi đè thuộc tính mặc định - nghĩa là dữ liệu mà bạn quan tâmtrong thử nghiệm và không có gì khác.

Dữ liệu ví dụ của bạn cũng có thể tham khảo các mô hình mặc định khác, được đại diện bởi procs với đánh giá chậm, vì vậy bạn có thể ghi đè liên kết dễ dàng khi muốn.

Phiên bản 2 cung cấp định dạng rõ ràng hơn nhiều, trong khi vẫn cung cấp các phương pháp ma thuật new_*, create_*, and default_* cho mọi mô hình.

Tôi sẽ tránh bất kỳ loại chương trình "kịch bản" nào khuyến khích xây dựng ngày càng nhiều dữ liệu thử nghiệm khó đọc sau này. Bạn có thể tạo các đối tượng có tên (tùy chỉnh) với FR2, nhưng tôi chưa bao giờ tìm thấy một nhu cầu cho nó.

P.S. Hãy chắc chắn rằng bạn xem xét đơn vị của bạn chiến lược thử nghiệm là tốt - Đồ đạc và tất cả các tương tự của họ là các đối tượng thực sự nhấn DB, làm cho các bài kiểm tra chức năng hoặc tích hợp. Tôi hiện đang sử dụng chế độ nhạo báng của RSpec cùng với stub_model() và đá quý unit_record mới nhất để không cho phép truy cập DB.

2

Tôi đã chơi xung quanh với machinist gần đây và đang đào nó.

3

Tôi là người hâm mộ lớn của nhà máy khi bạn chỉ cần một hoặc một vài đối tượng. Bạn có thể tự viết hoặc sử dụng số Factory Girl của Thoughtbot.

Đối với các trường hợp bạn cần một bộ đồ vật có liên quan, đồ đạc đánh bại nhà máy, và bạn nên xem qua số Lite Fixtures tuyệt vời giúp đồ đạc đáng kể hơn DRY và có thể quản lý được.

0

Nhà máy Girl rất tuyệt. Chúng tôi sử dụng nó trong tải công việc.

Factory.define :usa, :class => Team do |f| 
    f.country_name 'USA' 
    f.rank   15.6 
end 

Factory.define :player do |f| 
    f.first_name 'Stevie' 
    f.last_name 'Wonder' 
    f.team  Factory.build(:usa) 
end 

Sau đó, trong thông số kỹ thuật của bạn, bạn có thể sử dụng Factory.build(:usa) hoặc Factory.create(:usa) để xây dựng hoặc tạo ra một đội Hoa Kỳ tương ứng.

4

Tôi cũng có thể tặng thêm cho Factory Girl. Cách nó có thể kết hợp giữa nhiều Nhà máy thực sự hữu ích khi bạn có một bộ mô hình hơi bình thường. Ví dụ, một dự án có một người quản lý dự án.

Factory.define :project_manager do |f| 
    f.first_name "John" 
    f.last_name "Doe" 
end 

Factory.define :project do |f| 
    f.name "Sample Project" 
    f.association :project_manager 
end 

Bằng cách đó bạn không cần phải lo lắng về việc thực sự thiết lập mối quan hệ trong mỗi thử nghiệm. Nó cũng có thể làm một số công việc như Faker, nơi bạn có thể xây dựng dữ liệu mẫu trong các nhà máy sử dụng Factory.sequence. Để biết tất cả thông tin về Factory Girl, hãy xem: http://dev.thoughtbot.com/factory_girl/.

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