كيف يمكنك تشغيل اختبار واحد/المواصفات الملف في RSpec?

StackOverflow https://stackoverflow.com/questions/143925

  •  02-07-2019
  •  | 
  •  

سؤال

كنت تريد أن تكون قادرة على تشغيل واحد المواصفات ملف اختبارات — على ملف واحد أنا والتحرير ، على سبيل المثال. rake spec ينفذ جميع المواصفات.مشروعي ليس القضبان المشروع ، rake spec:doc لا تعمل.

لا أعرف إذا كانت هذه المسائل, ولكن هنا هو بلدي بنية الدليل.

./Rakefile
./lib
./lib/cushion.rb
./lib/cushion
./lib/cushion/doc.rb
./lib/cushion/db.rb
./spec
./spec/spec.opts
./spec/spec_helper.rb
./spec/db_spec.rb
هل كانت مفيدة؟

المحلول

أو يمكنك تخطي أشعل النار واستخدام 'rspec' الأمر:

rspec path/to/spec/file.rb

في حالتك أعتقد طالما الخاص بك ./المواصفات/db_spec.rb يتضمن ملف المناسبة المساعدين ، ينبغي أن تعمل بشكل جيد.

إذا كنت تستخدم نسخة قديمة من rspec هو:

spec path/to/spec/file.rb

نصائح أخرى

الخام الاحتجاج:

rake spec SPEC=spec/controllers/sessions_controller_spec.rb \
          SPEC_OPTS="-e \"should log in with cookie\""

الآن معرفة كيفية تضمين هذا في المحرر الخاص بك.

هذا السؤال قديم ، لكنه يظهر في الجزء العلوي من جوجل عند البحث عن كيفية تشغيل اختبار واحد.أنا لا أعرف إذا كان هذا الأخير بالإضافة إلى ذلك ، ولكن لتشغيل اختبار واحد من المواصفات يمكنك القيام بما يلي:

rspec path/to/spec:<line number>

حيث سطر رقم هو رقم السطر الذي يحتوي على جزء من الاختبار.على سبيل المثال, إذا كان لديك المواصفات مثل:

1: 
2: it "should be awesome" do
3:   foo = 3
4:   foo.should eq(3)
5: end
6:

دعنا نقول انها المحفوظة في المواصفات/نماذج/foo_spec.rb.ثم يمكنك تشغيل:

rspec spec/models/foo_spec.rb:2

وسيكون فقط تشغيل هذا واحد المواصفات.في الواقع ، أن العدد يمكن أن يكون أي شيء من 2 إلى 5.

ويساعد هذا الأمل!

يمكنك أيضا استخدام النص الفعلي من *e*xample حالة اختبار مع -e !

لذلك:

it "shows the plane arrival time"

يمكنك استخدام

rspec path/to/spec/file.rb -e 'shows the plane arrival time'
./scripts/spec path/to/spec/file.rb -e 'shows the plane arrival time'

لا حاجة أشعل النار هنا.

من مساعدة (المواصفات -h):

-l, --line LINE_NUMBER           Execute example group or example at given line.
                                 (does not work for dynamically generated examples)

على سبيل المثال:المواصفات المواصفات/runner_spec.rb-l 162

إذا قمت بتثبيت rspec بمثابة المساعد بدلا من الأحجار الكريمة ، ثم لن يكون لديك spec قابل للتنفيذ.

على أية حال, كل ما عليك القيام به هو تشغيل الملف باستخدام روبي.على rspec رمز هو ذكي بما فيه الكفاية لتشغيل الاختبارات بالنسبة لك.

على سبيل المثال:

ruby myclass_spec.rb

http://github.com/grosser/single_test يتيح لك أن تفعل أشياء مثل..

rake spec:user          #run spec/model/user_spec.rb (searches for user*_spec.rb)
rake test:users_c       #run test/functional/users_controller_test.rb
rake spec:user:token    #run the first spec in user_spec.rb that matches /token/
rake test:user:token    #run all tests in user_test.rb that match /token/
rake test:last
rake spec:last

روبي 1.9.2 والقضبان 3 طريقة سهلة لتشغيل واحد المواصفات الملف:

  ruby -I spec spec/models/user_spec.rb

التفسير:

  • ruby الأمر يميل إلى أن يكون أسرع من rake الأمر
  • -I spec يعني "تشمل 'المواصفات' الدليل عند البحث عن ملفات"
  • spec/models/user_spec.rb هو الملف الذي تريد تشغيله.

لتشغيل كل من rspec الملفات: rspec

ملاحظة:يجب أن تكون في أصل المشروع الخاص بك

لتشغيل واحد rspec الملف: rspec 'path_to/spec.rb'

ملاحظة:استبدال 'path_to/المواصفات.rb مع المسار الخاص بك.علامات الاقتباس الاختياري.

لتشغيل واحد rspec اختبار من ملف واحد: rspec 'path_to/spec.rb:7'

ملاحظة::7 هو رقم السطر حيث يبدأ الاختبار

كنت تواجه صعوبة في الحصول على أي من هذه الأمثلة أن العمل ربما لأن المنصب القديم و الأوامر تغيرت ؟

بعد بعض بدس حول وجدت هذه الأعمال:

rspec المواصفات/نماذج/user_spec.rb

التي سوف تعمل فقط ملف واحد و مفيدة الانتاج في المحطة.

specky.همة

بدلا من ذلك, إلقاء نظرة على autotest.

تشغيل autotest في إطار الأوامر يعني أن المواصفات الملف سيتم تنفيذها كلما حفظه.أيضا, سيتم تشغيل كلما ملف speccing هو تشغيل.

على سبيل المثال, إذا كان لديك نموذج المواصفات ملف يسمى person_spec.rb و نموذج الملف الذي هو speccing يسمى الشخص.rb, ثم كلما يمكنك حفظ أي من هذه الملفات من جهاز محرر المواصفات الملف سوف يتم تنفيذها.

دعنا نقول أنك تشغيل اختبار خلق ما يجب عمله.يمكنك دائما تشغيل محددة todo المواصفات البرمجية باستخدام ملفات crete_spec.rb الملف أدناه.

      rspec/spec/features/controller/spec_file_name.rb

   Example:

   Creating  rspec spec/features/todos/create_spec.rb
   Editing   rspec spec/features/todos/edit_spec.rb
   Deleting  rspec spec/features/todos/destroy_spec.rb

إذا كنت ترغب في تشغيل جميع المواصفات في واحدة قصيرة.

   rspec 

إذا كنت ترغب في تشغيل جميع المواصفات المحددة تحكم المستخدم هذا.

  rspec/spec/feaures/controller_name

  Example:   rspec/spec/features/todos

أتمنى أن يمنحك المزيد من الفهم!

على الرغم من أن العديد من الإجابات كانت مكتوبة على هذا السؤال لا أحد منهم يستخدم Rspec tags النهج.

يمكنني استخدام علامات تشغيل واحد أو أكثر من المواصفات في ملفات مختلفة -- فقط تلك المتعلقة الحالي التنمية المهمة.

على سبيل المثال ، إضافة الوسم "ديف" مع قيمة "الحالية":

it "creates an user", dev: :current do
  user = create(:user)
  expect(user.persisted?).to be_truthy
end

ثم تشغيل

bundle exec rspec . --tag dev:current

علامات مختلفة/يمكن تعيين قيم في المواصفات الفردية أو مجموعات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top