أحاول تشغيل rspec لـ Ruby on Rails. أنا أركض القضبان 4.1.1. لقد قمت بتثبيت الأحجار الكريمة ، وأنشأت مجلد المواصفات مع بعض الاختبارات. لقد قمت بإنشاء دليل من خلال $ Rails g rspec:install
لقد حاولت إنشاء قاعدة بيانات اختبار من خلال $ rake db:test:prepare
ولكنه يلقي رسالة الخطأ هذه:
WARNING: db:test:prepare is deprecated. The Rails test helper now maintains your test
schema automatically, see the release notes for details.
انتهى بي الأمر إلى النظر إلى { نشر تجاوز سعة المكدس هذا ، والخيارين ، الخيار الذي كان يعمل:
rake db:schema:load Rails_ENV=test
لذلك ، الآن أنا بحاجة لتشغيل rspec .
عندما أقوم بتشغيل $ rspec spec
من سطر الأوامر ، أحصل على هذا الخطأ:
/Users/myname/.rbenv/versions/2.1.1/lib/Ruby/2.1.0/rubygems/core_ext/
kernel_require.rb:55:in `require': cannot load such file -- Rails_helper (LoadError)
كيف يمكنني حل هذا حتى أتمكن من بدء تشغيل الاختبارات؟
هناك بعض المشاكل مع rspec V3. لكن في حالتك أنت تستخدم V2.
يتغيرون
require 'Rails_helper'
إلى
require 'spec_helper'
وصف آخر تجد هنا https://teamtreehouse.com/forum/problem-with-rspec
بالنسبة إلى الإصدار 3:
إذا قام شخص ما باستخدام rspec V3 ، فسيحدث خطأ مشابه عند عدم تشغيل المولد. لذلك قبل محاولة أي شيء تشغيل مولد.
Rails generate rspec:install
إذا كنت تحصل على قائمة ضخمة من التحذير على وحدة التحكم الخاصة بك. ثم تحتاج إلى إزالة --warnings
من ملف .rspec
.
لقد حدث هذا الخطأ بالفعل في Rails 4 مع rspec 3 ، لكن في حالتي نسيت تشغيل المولد:
Rails generate rspec:install
كما اضطررت إلى إزالة warnings
من .rspec
، كما ذكر ذكره أحد مطوري rpsec
بالنسبة لي ، كانت المشكلة بسبب إصدار "rspec-support" مختلف تم تحميله وتنشيطه. لقد تم حلها عن طريق الدفع المسبق لـ "حزمة exec":
bundle exec rspec
بالنسبة للإصدارات الأحدث (3.5) ، إذا كنت بحاجة إلى تشغيل المولد ، فإن Rails generate rspec:install
لا يناسبني. انا إستعملت:
rspec --init
ينشئ .rspec
و spec/spec_helper.rb
.
تحرير: فقط في الحالة ، اكتشفت أنني قمت بتثبيت rspec gem لـ Ruby ، وليس تلك الموجودة في Rails ، لذلك rspec: install لم يكن متاحًا. يجب استخدام https://github.com/rspec/rspec-Rails .
كان لدي نفس الخطأ ولكن لم تكن هناك إشارة إلى Rails_helper
في أي مكان ولم نستخدم Rails.
ومع ذلك ، اكتشفت في النهاية أن ~/.rspec
الخاص بي كان يتطلب Rails_helper
(من المفترض أن يكون من إنشاء تطبيق Rails في الماضي) والذي كان يسبب المشكلة ...
$ cat ~/.rspec
--color
--format documentation
--require spec_helper
--require Rails_helper
الإصلاح بسيط مثل إزالة هذا الخط. آمل أن يساعد هذا شخصًا آخر في مواجهة نفس المشكلة!
لم ينجح أي من هذه الاقتراحات بالنسبة لي على Rails 4.2.0 مع rspec-Rails 3.2.3.
بدلاً من ذلك ، وضعت السطرين التاليين في الجزء العلوي من ملف المواصفات:
require 'Rails_helper'
require 'spec_helper'
الآن يمكنني تنفيذ rspec spec/features/my_spec.rb
.
في بعض الأحيان تحتاج إلى تشغيل الأمر rspec من الدليل الأصل للمشروع
أحد الاحتمالات التي نجحت بالنسبة لي هي التأكد من أنك تطلب spec_helper
. يمكن أن يتطلب RubyMine الافتراضي rspec
وهذا يمكن أن يؤدي في بعض الأحيان إلى هذا الخطأ.
من أجل أحد ما. إذا حصلت على هذا الخطأ عند محاولة اختبار ملف معين. قد ترغب في هذا
$ bundle exec rspec ./spec/features/user_login_spec.rb
$ bundle exec rspec ./spec/models/user_login_spec.rb
قد يكون لديك ملفك اسمه بشكل غير صحيح. تأكد من أنه ينتهي بـ _spec.rb
. لقد أخطأت في كتابة ملفي لتنتهي في _soec.rb
وكنت أخدش رأسي لفترة من الوقت ...
تذكر دائمًا تشغيل rspec
أو bundle exec rspec
من جذر مشروعك. شيء مثل:
bundle exec rspec spec/features/file_test_spec.rb
حصلت على الخطأ الذي وصفته عند تشغيل اختبار وحدة التحكم. ومع ذلك ، عندما أجريت اختبار نموذجي ، حصلت على الخطأ الحقيقي. انتهى الأمر إلى القول إن الخطأ كان يحدث لأنه لم يتم ترحيل قاعدة البيانات الخاصة بي. أصلحت الخطأ عن طريق تشغيل هذا الأمر ...
rake db:test:prepare