ฉันใช้คอนโซลรางในสภาพแวดล้อมการพัฒนาและฉันต้องการใช้โรงงาน ฉันจะเข้าถึงได้อย่างไร?
ฉันได้ลองแล้วrequire "FactoryGirl"ซึ่งผลตอบแทน
1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl
ฉันใช้คอนโซลรางในสภาพแวดล้อมการพัฒนาและฉันต้องการใช้โรงงาน ฉันจะเข้าถึงได้อย่างไร?
ฉันได้ลองแล้วrequire "FactoryGirl"ซึ่งผลตอบแทน
1.9.3p393 :301 > require "FactoryGirl"
LoadError: cannot load such file -- FactoryGirl
rails cจากนั้นทำrequire 'factory_bot'
คำตอบ:
เพื่อแก้ปัญหานี้ให้แน่ใจว่าอัญมณีบอทโรงงานถูกระบุไว้ใน Gemfile ของคุณคล้ายกับสิ่งนี้
group :development, :test do
gem 'factory_bot_rails'
end
แล้วbundle install.
สิ่งนี้ควรทำให้คลาส FactoryBot พร้อมใช้งานในคอนโซลการพัฒนา
หวังว่านี่จะช่วยได้
gem 'factory_girl_rails', :require => falseทำให้เกิดข้อผิดพลาดสำหรับทุกคนที่พยายามตั้งค่าสภาพแวดล้อมการพัฒนาตั้งแต่เริ่มต้นโปรดระวัง
rails console testจะช่วยให้คุณสร้างคอนโซลในสภาพแวดล้อมการทดสอบดังนั้นคุณไม่จำเป็นต้องอัปเดต Gemfile เพื่อใช้แพ็คเกจทดสอบในสภาพแวดล้อมการพัฒนา
ฉันทำวิธีต่อไปนี้:
เริ่มคอนโซลรางในสภาพแวดล้อมการทดสอบในโหมดแซนด์บ็อกซ์
rails console -e test --sandbox
คุณต้องการสิ่งนี้ด้วยเหตุผลสองประการ:
จากนั้นในคอนโซล:
ต้องการ FactoryBot (ถูกเรียกว่า FactoryGirl):
require 'factory_bot'
โหลดคำจำกัดความของโรงงาน:
FactoryBot.find_definitions
รวมวิธีการ FactoryBot เพื่อหลีกเลี่ยงการนำหน้าการโทรไปยัง FB ทั้งหมดด้วยFactoryBot( createแทนFactoryBot.create):
include FactoryBot::Syntax::Methods
PS สำหรับการประดิษฐ์อัญมณีคุณสามารถโหลดคำจำกัดความในคอนโซลรางด้วย:
Fabrication.manager.load_definitions
นอกจากนี้require 'faker'หากคุณใช้มัน
require 'ffaker'อย่างไร
fixture_file_uploadปัญหาเกี่ยวกับวิธีการที่ไม่ได้กำหนดซึ่งเกิดจากการไม่มีActionDispatch::TestProcessโมดูลดังนั้นคุณอาจพิจารณารวมไว้ด้วย
require "factory_bot_rails"; include FactoryBot::Syntax::Methods; require 'ffaker'
rails c -e test --sandbox
คุณต้องrequire 'factory_bot_rails'ซึ่งเป็นอัญมณีจริงที่ Rails ใช้ อัญมณีนั้นจะรวมไลบรารี Factory Bot ไว้ให้FactoryBotพร้อมใช้งาน
คุณสามารถทำได้หรืออัปเดต Gemfile เพื่อต้องการใช้เมื่อเริ่มต้นเช่นเดียวกับคำตอบของเนื้อแกะ
require 'faker'ด้วย