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'
لا حاجة لأشعل النار هنا.