ruby - كيف تقوم بتشغيل ملف اختبار/مواصفات واحد في RSpec؟




testing (10)

أريد أن أكون قادراً على تشغيل اختبارات ملف مواصفات واحدة - لملف واحد أقوم بتحريره ، على سبيل المثال. rake spec ينفذ جميع المواصفات. مشروعي ليس مشروع Rails ، لذا فإن 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

specky.vim


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

rspec path/to/spec/file.rb

في حالتك أعتقد طالما أن ملف ./spec/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\""

اكتشف الآن كيفية تضمين هذا في محررك.


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

سيعني تشغيل autotest في نافذة الأوامر أنه سيتم تنفيذ ملف المواصفات كلما قمت بحفظه. أيضا ، سيتم تشغيله كلما يتم تشغيل الملف الذي تقوم بتحديده.

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


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

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

على سبيل المثال ، أقوم بإضافة العلامة "dev" بالقيمة "current":

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

ثم أركض

bundle exec rspec . --tag dev:current

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


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

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

rspec spec / models / user_spec.rb

سيعمل ذلك فقط على الملف المفرد ويوفر مخرجات مفيدة في الجهاز.


لدى Ruby 1.9.2 و Rails 3 طريقة سهلة لتشغيل ملف المواصفات واحد:

  ruby -I spec spec/models/user_spec.rb

تفسير:

  • يميل ruby إلى أن يكون أسرع من قيادة rake
  • -I spec means "include the" spec "directory when looking for files"
  • spec/models/user_spec.rb هو الملف الذي نريد تشغيله.

من مساعدة (spec -h):

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

مثال: spec spec / runner_spec.rb -l 162


يتيح لك 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

يمكنك أيضًا استخدام النص الفعلي لحالة اختبار * 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'

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





rspec