স্পেক / রেল_হেল্পার.আরবি কীভাবে স্পেক / স্পেক_হেল্পার.আরবি থেকে আলাদা? আমার কি দরকার?


90

আমি দ্বিতীয়বারের জন্য রেল টিউটোরিয়াল করছি। আমি এই প্রবেশ যখন

rails generate integration_test static_pages

আমি পেতে spec/rails_helper.rbএবং spec/spec_helper.rbপরিবর্তে ন্যায়বিচারspec/spec_helper.rb

এখন যখন আমি আমার পরীক্ষাগুলি পরিচালনা করি, তখন এগুলি দীর্ঘতর (আরও "ভার্বোজ") হয় এবং আমি এই বারের চেয়ে বেশি ধীর হয়েছি। আমি ভাবছি দুটি ফাইলের মধ্যে পার্থক্য কী এবং আমি যদি কিছু ভুল করে থাকি। এছাড়াও, rails_helper.rbসবকিছু গোলমাল না করে ফাইল থেকে মুক্তি পাওয়ার কোনও উপায় আছে কি ?


আপনার পরীক্ষাগুলি এমন উত্পাদন করে যা তারা আগে উত্পাদন করেনি? (একটি নতুন প্রশ্নের সাথে সম্পর্কিত হতে পারে))
ডেভ শোয়েসগুথ

আমি পরিভাষা সম্পর্কে নিশ্চিত নই, তবে এখন পরীক্ষাগুলি প্রতিটি রত্নের মধ্য দিয়ে যায় যা আমাকে বোঝে না এমন জিনিসগুলির একটি দীর্ঘ তালিকা দেয় এবং কেবল তখনই ফলাফলটি উপস্থিত হয়। আগে, এটি কেবল ফলাফল দিয়েছে। আমি এখানে এটি অনুলিপি করব তবে এটি আসলেই দীর্ঘ ...
ব্যবহারকারী 3417583

এটি সম্ভবত আরএসপেক 3 অবমূল্যায়ন। যদি আপনি তাদের খুঁজে বের করতে বা এই myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3 থেকে খুঁজে বের করতে না পারেন , তাদের একটি নতুন প্রশ্নে রাখুন।
ডেভ শোয়েসগুথ

4
এটি ঠিক হয়ে গেছে, আমাকে .rspec
ব্যবহারকারী 3417583

উত্তর:


130

আরএসপেক-রেল 3 জেনারেট করে spec_helper.rbএবং rails_helper.rbspec_helper.rbরেলগুলির উপর নির্ভর করে না এমন চশমাগুলির জন্য (যেমন lib ডিরেক্টরিতে ক্লাসগুলির জন্য চশমা)। rails_helper.rbরেশগুলির জন্য যা কোনও রেলের উপর নির্ভর করে (একটি রেল প্রকল্পে, বেশিরভাগ বা সমস্ত)। rails_helper.rbপ্রয়োজন spec_helper.rb। সুতরাং না, পরিত্রাণ পাবেন না rails_helper.rb; spec_helper.rbআপনার চশমা এটি প্রয়োজন (এবং না )।

আপনি আপনার অ-পাগল নির্ভর চশমা যে তারা অ পাগল নির্ভর জোরদার করা, এবং সম্ভব হিসাবে হিসাবে দ্রুত চালানোর জন্য যখন আপনি তাদের নিজেদের দ্বারা চালানো চান, আপনি প্রয়োজন পারে spec_helper.rbবদলে rails_helper.rbযাদের। কিন্তু এটা খুব সুবিধাজনক -r rails_helperআপনার .rspecবরং, এক সাহায্যকারী বা প্রতিটি বৈশিষ্ট ফাইলে অন্যান্য প্রয়োজন যাতে একটি জনপ্রিয় পদ্ধতি হবে নিশ্চিত নয়।

আপনি যদি বসন্ত প্রিলোডার ব্যবহার করছেন তবে প্রতিটি ক্লাস কেবল একবার লোড করা দরকার, এবং বসন্তের লোড ক্লাসগুলি অধীর আগ্রহে চাপিয়ে দেয় এমনকি যদি আপনি কেবল একটি একক স্পেস প্রয়োজন যা চালান তবে কেবল প্রয়োজনের ক্ষেত্রেspec_helper তেমন মূল্য নেইspec_helper কিছু ফাইলে ।

সূত্র: https://www.relishapp.com/rspec/rspec-rails/docs/upreg#default-helper-files


4
এটা খুব বিভ্রান্তিকর। আপনার এখানে যেমন আছে তেমন বানান করতে আমি আরএসপেক-রেলগুলি রেডমে আপডেট করার জন্য আমি পিআর যুক্ত করব। ব্যাখ্যার জন্য ধন্যবাদ.
স্টিভ

4
আরএসপেক থেকে শুরু করা লোকদের জন্য এটি একটি বড় জগাখিচুড়ি!
এডুয়ার্ডো

1

আপনি সর্বদা আপনার সমস্ত কনফিগারেশনটি স্পেশালহেল্পারের সাথে একত্রিত করতে পারেন এবং কেবলমাত্র সহায়তা সহায়ক অন্তর্ভুক্ত করতে পারেন তিনি সহায়তাকারী ফাইলটি রেল করেন।

দিনের শেষে এটি কোনওভাবেই "আদর্শ" নয়, আপনি ম্যানুয়ালি এই "রিফ্যাক্টর" করছেন তবে যদি এটি আপনাকে সত্যিই বিরক্ত করে। কীভাবে এটির কাঠামো তৈরি করবেন তা কেবল আপনার উপর নির্ভর করেRspec.configure

#rails_helper.rb

require 'spec_helper'

#EMPTY FILE

এবং কেবল সমস্ত রেল নির্দিষ্ট সেটআপ এনে দিন

# spec_helper.rb

# This file is copied to spec/ when you run 'rails generate rspec:install'
require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'

require File.expand_path('../config/environment', __dir__)

# Prevent database truncation if the environment is production
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'rspec/rails'
# Add additional requires below this line. Rails is not loaded until this point!

# Requires supporting ruby files with custom matchers and macros, etc, in
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
# run as spec files by default. This means that files in spec/support that end
# in _spec.rb will both be required and run as specs, causing the specs to be
# run twice. It is recommended that you do not name files matching this glob to
# end with _spec.rb. You can configure this pattern with the --pattern
# option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
#
# The following line is provided for convenience purposes. It has the downside
# of increasing the boot-up time by auto-requiring all files in the support
# directory. Alternatively, in the individual `*_spec.rb` files, manually
# require only the support files necessary.
#
# Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }

# Checks for pending migrations and applies them before tests are run.
# If you are not using ActiveRecord, you can remove these lines.
begin
  ActiveRecord::Migration.maintain_test_schema!
rescue ActiveRecord::PendingMigrationError => e
  puts e.to_s.strip
  exit 1
end
RSpec.configure do |config|

... all our config.whatever_your_heart_desires
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.