2013-08-12 37 views
59

Tôi đang sử dụng bảng điều khiển đường ray trong môi trường phát triển và tôi muốn sử dụng các nhà máy. Làm thế nào tôi có thể truy cập vào chúng?Làm cách nào để sử dụng các nhà máy từ FactoryGirl trong bảng điều khiển ray

Tôi đã thử require "FactoryGirl" trả về

1.9.3p393 :301 > require "FactoryGirl" 
LoadError: cannot load such file -- FactoryGirl 
+0

[A] (https://coderwall.com/p/4ion2q) [đơn giản] (http: // www.neevtech.com/blog/2012/09/27/factory-girl-with-test-console/) [google] (http://www.particlewave.com/2012/07/14/using-factorygirl-with-the -rails-console /) tìm kiếm dẫn đến một số kết quả. Bạn đã thử những? Họ không làm việc? Bạn đã thử những gì cho đến nay? – wpp

+0

Đây là tất cả trong thử nghiệm, tôi muốn làm điều đó trong phát triển –

+0

bạn có thể muốn bắt đầu với một yêu cầu 'factory_girl' hơn là đòi hỏi hằng số FactoryGirl. –

Trả lời

34

Để giải quyết vấn đề này đảm bảo rằng đá quý nhà máy bot được specifed trong Gemfile của bạn tương tự như sau

group :development, :test do 
    gem 'factory_bot_rails' 
end 

Sau đó bundle install.

Điều này sẽ làm cho lớp FactoryBot khả dụng trong bảng điều khiển phát triển.

Hy vọng điều này sẽ hữu ích.

+2

Thêm FactoryGirl vào gemfile như thế này thay vì 'gem 'factory_girl_rails',: require => false' sẽ ném lỗi cho bất kỳ ai cố gắng thiết lập môi trường phát triển từ đầu, hãy cẩn thận. – Epigene

+3

Câu trả lời này hoạt động, nhưng câu trả lời được chấp nhận phải là 'kiểm soát giao diện điều khiển rails', nó sẽ cho phép bạn tạo bảng điều khiển trong môi trường thử nghiệm, do đó bạn không cần cập nhật Gemfile của mình để sử dụng gói thử nghiệm trong môi trường phát triển –

19

Bạn cần require 'factory_girl_rails', là đá quý thực sự đang được Rails sử dụng. Đá quý đó sẽ bao gồm thư viện Factory Girl, làm cho FactoryGirl có sẵn.

Bạn có thể thực hiện việc này hoặc cập nhật Gemfile để yêu cầu khởi động như trong câu trả lời của muttonlamb.

123

Tôi làm điều này theo cách sau:

  • Bắt đầu đường ray giao diện điều khiển trong môi trường thử nghiệm trong chế độ sandbox.

    rails console test --sandbox 
    

Bạn cần điều này vì hai lý do:

  1. Mọi thay đổi bạn làm được cuộn lại.
  2. Nếu bạn đã có một số dữ liệu về hạt giống, có thể các nhà máy sẽ bắt đầu tuần tự hóa các thuộc tính từ 1, nhưng các bản ghi này có thể đã tồn tại.

Sau đó, trong giao diện điều khiển:

  • Yêu cầu FactoryBot (được gọi là FactoryGirl):

    require 'factory_bot' 
    
  • tải các định nghĩa nhà máy:

    FactoryBot.find_definitions 
    
  • Bao gồm FactoryBot phương pháp tránh prefi Xing tất cả các cuộc gọi đến FB với FactoryBot (create thay vì FactoryBot.create):

    include FactoryBot::Syntax::Methods 
    

T.B. Đối với fabrication gem bạn có thể tải các định nghĩa trong đường ray console với:

Fabrication.manager.load_definitions 

Cũng require 'faker' nếu bạn sử dụng nó.

+0

rằng dòng cuối cùng là 'yêu cầu' ffaker''? – Dihedral

+0

Nó phụ thuộc vào đá quý bạn sử dụng - faker hoặc ffaker, nhưng tôi đồng ý rằng ffaker gần đây được sử dụng rộng rãi hơn. –

+0

Tôi đã gặp vấn đề 'fixture_file_upload' chưa được định nghĩa, do sự vắng mặt của mô-đun' ActionDispatch :: TestProcess', vì vậy bạn có thể xem xét việc thêm nó – divideByZero

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