ฉันจะบอก Rails ให้ใช้ RSpec แทนการทดสอบเมื่อสร้างแอพ Rails ใหม่ได้อย่างไร


152

ฉันได้test-unitรับการติดตั้งและrspecการติดตั้ง (พร้อมกับ-core, -expectations, -mocksและ-railsรุ่น 2.6.x) เมื่อฉันเรียกใช้คำสั่งrails new fooจะใช้ในการสร้างแฟ้มการทดสอบต้นขั้วแทนtest-unitrspec

มีตัวเลือกที่ฉันสามารถบอกทางรถไฟให้ใช้ rspec เพื่อสร้างการทดสอบแทนได้หรือไม่?

คำตอบ:


262

ต่อไปนี้ควรทำงาน:

ที่บรรทัดคำสั่ง:

rails new MYAPP -T # The -T option tells rails not to include Test::Unit

ใน Gemfile:

gem 'rspec-rails'

ที่บรรทัดคำสั่ง:

bundle install
rails g rspec:install

ฉันคิดว่าบางขั้นตอนเหล่านั้นไม่เป็นระเบียบใช่ไหม? ดูเหมือนว่าจะใช้งานได้แม้ว่าจะทำในลำดับที่ถูกต้อง โปรดแก้ไขคำตอบของคุณและฉันจะทำเครื่องหมายว่าเป็นที่ยอมรับ
aarona

60
คุณไม่จำเป็นต้องมีgenerator.rbinitializer สิ่งนี้ได้รับการดูแลโดยทางรถไฟของ RSpec สิ่งที่คุณต้องการคือrspec-railsภายในdevelopmentกลุ่มGemfileที่เพียงพอสำหรับเครื่องกำเนิดไฟฟ้า คุณไม่จำเป็นต้องสร้างแอพด้วย-Tคุณสามารถลบtestdir และมันจะทำงาน
Ryan Bigg

1
คุณสามารถแก้ไขรหัสจาก g.test_framework =: rspec ถึง g.test_framework: rspec
Deepak Lamichhane

8
@RyanBigg: มีตัวเลือก -T เราจะได้"rails/test_unit/railtie"แสดงความคิดเห็นในapplication.rb
Giang Nguyen

13
เมื่อคุณเพิ่มrspec-railsอัญมณีสิ่งสำคัญคือให้ทดสอบและพัฒนามิฉะนั้นเครื่องปั่นไฟจะไม่ใช้ RSpec แม้ว่าคุณจะทำตามขั้นตอนด้านบน
f กุมภาพันธ์Ink

73

สร้างแอปพลิเคชันรางใหม่ของคุณเป็น:

rails new <app_name> -T

หรือลบtestไดเรกทอรีของคุณจากแอปพลิเคชันที่มีอยู่:

rm -rf test/

ทำรายการใน Gemfile ของคุณ:

gem 'rspec-rails'

จากบรรทัดคำสั่งติดตั้งอัญมณี

$ bundle install

จากบรรทัดคำสั่งติดตั้ง rspec ลงในใบสมัครของคุณ:

$ rails g rspec:install

ตอนนี้แอปพลิเคชั่นรถไฟของคุณใช้ RSpec แทนการทดสอบหน่วย


2
ขั้นตอน 'การติดตั้งมัด' หายไปจากรายการนั้น ที่เพิ่ม
cczona

6

เมื่อคุณสร้างแอปพลิเคชั่นรางด้วย:

rails new <app_name> -T  # to exclude Test::Unit

เพิ่ม RSpec gem ใน Gemfile ของคุณด้วยวิธีต่อไปนี้:

group :development, :test do
  gem "rspec-rails"
end

ในการเขียนบรรทัดคำสั่ง:

bundle install  # this will install the missing gems

ตอนนี้คุณต้องติดตั้ง RSpec โดยเรียกใช้:

rails generate rspec:install

สิ่งนี้จะสร้างไฟล์ต่อไปนี้:

create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb

ฉันแนะนำอย่างยิ่งให้อ่านความคิดเห็นของ spec_helper และ rails_helper ทั้งหมดเพื่อทำความเข้าใจกับสิ่งที่แต่ละตัวเลือกทำได้ดี

เมื่อทุกอย่างถูกตั้งค่าคุณสามารถเรียกใช้การทดสอบทั้งหมดของคุณด้วย:

bundle exec rspec

คุณสามารถอ่านการกำหนดค่าเพิ่มเติมเกี่ยวกับ spec_helper แนะนำและ rails_helper บนhttps://kolosek.com/rails-rspec-setup


4

ฉันเป็นนักพัฒนาใหม่และฉันเพิ่งสร้างธง rails (-rspec) เพื่อแก้ไขปัญหาของ OP มันกำจัด Test :: Unit และแทรก gems Rails-rspec ด้วยสคริปต์ทุบตี สคริปต์สามารถแก้ไขได้เพื่อช่วยผู้พัฒนา linux โดยเพิ่มอัญมณี therubyracer โดยอัตโนมัติหรือสร้างธงและอัญมณีที่กำหนดเอง (อาจจะไปที่บรรทัดอัญมณีโดยเฉพาะและลบความคิดเห็น)

นี่คือส่วนสำคัญ && ฉันหวังว่าสิ่งนี้จะช่วยให้ใครบางคนอยู่ที่นั่น https://gist.github.com/MTen/8310116


0

ไม่มีวิธีดั้งเดิมในการทำเช่นนี้กับrailsCLI สร้างโครงการใหม่โดยไม่test-unit:

rails new rails-app --skip-test

จากนั้นทำตามrspecคำแนะนำเพื่อรวมเข้ากับแอพ Rails ใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.