testing - الإعداد RSpec لاختبار جوهرة(لا القضبان)




rubygems gem (3)

من السهل جدًا مع المولد الإضافي لقضبان rspec لإعداد RSpec لاختبار تطبيق Rails. ولكن ماذا عن إضافة RSpec لاختبار جوهرة في التنمية؟ أنا لا أستخدم الجواهري أو مثل هذه الأدوات. أنا فقط استخدمت Bundler ( bundle gem my_gem ) لإعداد هيكل الأحجار الكريمة الجديدة وتحرير * .gemspec يدويا. أضفت أيضًا s.add_development_dependency "rspec", ">= 2.0.0" إلى gemspec وقمت bundle install .

هل هناك بعض البرامج التعليمية اللطيفة ما يجب القيام به بعد ذلك للحصول على عمل RSpec؟


إليك طريقة رخيصة وسهلة (على الرغم من أنها غير موصى بها رسميًا):

جعل دير في الجذر الخاص بك دعا spec ، ووضع المواصفات الخاصة بك في هناك. ربما لديك بالفعل تثبيت rspec ، ولكن إذا لم تقم بذلك ، قم فقط gem install rspec وتنسى Gemfiles و bundler.

بعد ذلك ، ستنشئ مواصفات وتحتاج إلى معرفة مكان تطبيقك ومكان ملفاتك وتضمين الملف الذي ترغب في اختباره (إلى جانب أي تبعيات لديها):

# spec/awesome_gem/awesome.rb
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
$: << File.join(APP_ROOT, 'lib/awesome_gem') # so rspec knows where your file could be
require 'some_file_in_the_above_dir' # this loads the class you want to test

describe AwesomeGem::Awesome do
  before do
    @dog = AwesomeGem::Awesome.new(name: 'woofer!')
  end
  it 'should have a name' do
    @dog.name.should eq 'woofer!'
  end
  context '#lick_things' do
    it 'should return the dog\'s name in a string' do
      @dog.lick_things.should include 'woofer!:'
    end
  end
end

فتح محطة وتشغيل rspec:

~/awesome_gem $ rspec
..

Finished in 0.56 seconds
2 examples, 0 failures

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

# .rspec
--format documentation --color --debug --fail-fast

سهل وسريع وأنيق!

يعجبني ذلك لأنه لا يتعين عليك إضافة أي تبعيات لمشروعك على الإطلاق ، ولا يزال الأمر برمته سريعًا جدًا. bundle exec إبطاء الأشياء قليلاً ، وهو ما يجب عليك فعله للتأكد من أنك تستخدم نفس الإصدار من rspec طوال الوقت. كانت المدة التي استغرقها تشغيل الاختبارين 0.56 ثانية في 99٪ من الوقت الذي استغرقته عملية تحميل جهاز الكمبيوتر rspec. يجب أن يكون تشغيل المئات من المواصفات سريعًا للغاية. المشكلة الوحيدة التي يمكن أن تعمل بها والتي أعرفها هي إذا قمت بتغيير إصدارات rspec والإصدار الجديد ليس متوافقاً مع بعض الوظائف التي استخدمتها في الاختبار ، قد تضطر إلى إعادة كتابة بعض الاختبارات.

هذا أمر جيد إذا كنت تقوم بعمل مواصفات لمرة واحدة أو لديك سبب وجيه لعدم تضمين rspec في gemspec الخاص بك ، على الرغم من أنه ليس جيدًا جدًا لتمكين المشاركة أو فرض التوافق.


حل إيان أعلاه يعمل عظيم!

إذا كنت تريد أيضًا Rakefile ، فهذا هو كل ما تحتاج إليه:

require 'rspec/core/rake_task'

RSpec::Core::RakeTask.new(:spec)

# If you want to make this the default task
task default: :spec

تحقق من RDoc لـ RakeTask للخيارات المختلفة التي يمكنك تمريرها بشكل اختياري في تعريف المهمة.






rspec2