2012-04-27 15 views
6

Trong bản phát hành mới nhất của FactoryGirl, một số phương pháp cú pháp như Factory.create bị khấu hao vì lợi ích của một số khác, đáng chú ý nhất là FactoryGirl.create và đơn giản hơn create.Không rõ khi nào sử dụng cú pháp FactoryGirl cụ thể

Tuy nhiên, kinh nghiệm cho thấy rằng một số cú pháp nhất định không phải lúc nào cũng phù hợp với ngữ cảnh.

Đưa ví dụ:

FactoryGirl.define do 

    factory :article do 
    after_create {|a| a.comments << create(:comment) } 
    end 

    factory :comment do 
    end 

end 

đâu Điều has_many Comments và Comments belongs_to Điều. Trong các nhà máy ở trên, a.comments << create(:comment) phát hành lỗi Comment(#nnn) expected, got FactoryGirl::Declaration::Static. Thay đổi dòng đó thành a.comments << FactoryGirl.create(:comment) và lỗi sẽ biến mất.

Không rõ khi nào một cú pháp nên được ưu tiên hơn bất kỳ biểu mẫu nào khác.

Trả lời

5

Tôi đã học ký hiệu viết tắt không được hỗ trợ trong callbacks (chẳng hạn như after_create) kể từ phiên bản hiện tại (3.2.0). Thông tin này đến trực tiếp từ các nhóm FactoryGirl thông qua các nhóm của Google. Tôi sẽ cập nhật câu hỏi này khi/nếu nó được thêm vào trong một phiên bản trong tương lai.

+1

Bạn là một anh chàng cứu trợ friggin. Tôi chỉ đi chăn sử dụng cú pháp dài. Tốt hơn một số tổ hợp phím phụ hơn giờ gỡ lỗi không cần thiết. –

+0

Tôi đã hỏi điều này một năm trước, và đã sử dụng hình thức dài kể từ đó. Vâng, tôi đồng ý, cách đầu gãi ít hơn. – IAmNaN

1

Theo FactoryGirl documentation, nếu bạn muốn bỏ qua các tiền tố mô-đun FactoryGirl khi gọi phương pháp thích tạo và xây dựng, bạn cần phải trộn trong phương pháp FactoryGirl trong rspec/kiểm tra đơn vị mô-đun như thế này:

# rspec 
RSpec.configure do |config| 
    config.include FactoryGirl::Syntax::Methods 
end 
+0

Cảm ơn bạn đã trả lời Salil. Vâng, tôi đã làm điều đó, điều này cho phép tôi sử dụng 'create' chỉ trong các tình huống được mô tả ở trên. – IAmNaN

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