আরএসপেক-এ আপনি কীভাবে একটি একক পরীক্ষা / স্পেক ফাইল চালাবেন?


282

উদাহরণস্বরূপ, আমি যে ফাইলটি সম্পাদনা করছি তার জন্য আমি একটি একক স্পেস ফাইলের পরীক্ষা চালাতে সক্ষম হতে চাই। rake specসমস্ত চশমা চালায়। আমার প্রকল্পটি কোনও রেল প্রকল্প 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

উত্তর:


392

অথবা আপনি র‌্যাক এড়িয়ে যান এবং 'আরএসপেক' কমান্ডটি ব্যবহার করতে পারেন:

rspec path/to/spec/file.rb

আপনার ক্ষেত্রে আমি মনে করি যতক্ষণ আপনার ./spec/db_spec.rb ফাইলটিতে যথাযথ সাহায্যকারীদের অন্তর্ভুক্ত করা উচিত এটি ঠিকঠাক কাজ করা উচিত।

আপনি যদি আরএসপেকের একটি পুরানো সংস্করণ ব্যবহার করেন তবে তা হ'ল:

spec path/to/spec/file.rb

31
নতুন আরএসপেকের সাথে আপনাকে "আরএসপিপথ / টু / ফাইল.আরবি" ব্যবহার করতে হবে
ডিজেবার্ডিক

3
হতে পারে আমি এটি ভুল করছি, তবে আমাকে "বান্ডিল এক্সিকিউটিভ আরএসপেক পথ / to / spec / file.rb" করতে হবে
andrhamm

2
আপনি যদি রেলগুলি ব্যবহার করছেন তবে আপনি অবশ্যই শূন্য ডাটাবেস থেকে শুরু করছেন তা নিশ্চিত করার জন্য রেকে ব্যবহার করে আপনার চশমাগুলি চালিয়ে যেতে চাইবেন।
সুপারলুমিনারি

@ আন্ডারহ্যাম, আপনি কেবল নিজের বান্ডিলের প্রসঙ্গে আপনার চশমা চালাচ্ছেন। আপনি যদি রত্নগুলি ব্যবহার না করে (এটি আরভিএমের সাথে ডিফল্টরূপে আসে এবং আরবেভের একটি পৃথক এক্সটেনশন হয়)
কালেব

6
আপনি যদি কেবল একটি পরীক্ষা চালাতে চান তবে আপনি ফাইলটি পরীক্ষার সূচনার লাইন নম্বর যুক্ত করুন। উদাহরণ: আরএসপেক পাথ / টু / স্পিক / ফাইল.আরবি: 455
রানমোক

201

কাঁচা প্রার্থনা:

রেক স্পেক স্পেক = স্পেক / কন্ট্রোলার / সেশনস_কন্ট্রোলার_স্পেক.আরবি \
          স্পেক_ওপিটিএস = "- ই \" কুকি দিয়ে লগ ইন করা উচিত "" "

এখন আপনার এডিটরে এটি কীভাবে এম্বেড করা যায় তা নির্ধারণ করুন।


1
যেমনটি আমি বলেছি, আমি রেলগুলিতে নেই তাই কোনও নিয়ামক নেই। তবে হ্যাঁ, "rake spec SPEC = file.rb" কাজ করে। ধন্যবাদ! আমি এখন ইমাস ইন্টিগ্রেশন নিয়ে কাজ করছি।
জোনাথন ট্রান

5
আপনি যদি এটিকে এড়াতে পারেন তবে রেকফিল চালু করবেন না। এটি ফ্রিকিন বয়সগুলি লাগে
অরিয়ন এডওয়ার্ডস

2
আমি স্বীকৃত উত্তরটি পরিবর্তন করেছি, তবে SPEC_OPTS পরমও আমার পক্ষে সহায়ক ছিল।
জোনাথন ট্রান

2
এখন এটাই আমি একটি ভাল উত্তর বলি। কেন এটি "উত্তর" হিসাবে চিহ্নিত করা হয়নি?
gmile

1
স্পেক সরাসরি চালানো প্রায়শই সেরা পছন্দ, তবে এমন অনেক সময় আছে যখন আপনাকে একটি কাস্টম রাকফাইলে বিভিন্ন ম্যাজিক বিটের জন্য রেক চালাতে হয়
নেরডমাস্টার

124

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

rspec path/to/spec:<line number>

যেখানে লাইন নম্বর- এমন একটি লাইন নম্বর যাতে আপনার পরীক্ষার অংশ থাকে। উদাহরণস্বরূপ, যদি আপনার কাছে কোনও অনুমান থাকে:

1: 
2: it "should be awesome" do
3:   foo = 3
4:   foo.should eq(3)
5: end
6:

ধরা যাক এটি স্পেক / মডেল / foo_spec.rb এ সংরক্ষণ করা হয়েছে। তাহলে আপনি দৌড়াবেন:

rspec spec/models/foo_spec.rb:2

এবং এটি ঠিক যে একটি অনুমান চালানো হবে। আসলে, এই সংখ্যাটি 2 থেকে 5 পর্যন্ত যে কোনও কিছু হতে পারে।

আশাকরি এটা সাহায্য করবে!


এটি আকর্ষণীয়, যদিও দেখে মনে হচ্ছে এটি একবারে আপনার একাধিক ফাইলগুলিতে প্রতিস্থাপন করার পরে কাজ করে না (যেমন আপনি এটি কেবলমাত্র মূল _spec.rb ফাইলের সাথে ব্যবহার করতে পারেন, তবে যদি আপনার উদাহরণগুলির মধ্যে এটি না থাকে তবে এটি কিছুই চালাবে না will । এছাড়াও আপনি যদি এটি এমন কোনও ফাইলের জন্য ব্যবহার করার চেষ্টা করেন যা কোনও শীর্ষ স্তরের বৈশিষ্ট্যযুক্ত ফাইল নয়, এটি কোনও কিছুই চালায় না))
ট্রেজকাজ

আমি বেশ অনুসরণ করি না। "শীর্ষ-স্তরের স্পেক ফাইল" বলতে কী বোঝ? আমার টেস্ট স্যুটটি সর্বদা বেশ কয়েকটি ফাইল জুড়ে বিভক্ত এবং আমি এই পদ্ধতিটি ব্যবহার করে সর্বদা একটি ফাইলে পরীক্ষার আবেদন করতে পারি। আপনার অর্থ কি এমন কোনও ফাইল রয়েছে যা requireআপনার অন্যান্য স্পেক ফাইলগুলিতে থাকে?
juanpaco

আমি স্পেক / ডিরেক্টরিতে যে কোনও স্তরে যেকোন ফাইলে এটি ব্যবহার করতে পারি। আমি বিশ্বাস করি ট্রেজকাজ ভুল।
মাইকেল ডুরান্ট

7
এটি দুর্দান্ত এবং শীর্ষে থাকা উচিত!
টমমাসো বার্বুগলি

4
আমি এটি সর্বদা ব্যবহার করি তবে কখনও কখনও আপনি একটি ফাইল থেকে কয়েকটি পরীক্ষা চালাতে চান। তারপরে আপনি এর মতো সমস্ত উদাহরণ টাইপ করতে পারেন:rspec spec/models/foo_spec.rb:2:12:49
swilgosz

61

আপনি এর সাথে * ই * নমুনা পরীক্ষা মামলার আসল পাঠ্যটিও ব্যবহার করতে পারেন -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'

এখানে রাকের দরকার নেই


আপনার কেবল এটিই প্রয়োজন, কেবলমাত্র "স্পেস" এর পরিবর্তে "আরএসপিইসি" দ্বারা প্রতিস্থাপন করা উচিত @ বন্ধুত্ব
নিকোলাস

19

সহায়তা থেকে (নির্দিষ্ট -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


3
নতুন আরএসপেক সংস্করণে আপনি :ডকুমেন্টেশন প্রতি একটি কোলনের পরে লাইন নম্বর এবং একটি জনপ্রিয় উত্তর যুক্ত করুন।
ড্রাগন 788

13

আপনি যদি রত্নের পরিবর্তে আরএসপিইকে প্লাগইন হিসাবে ইনস্টল করেন তবে আপনার কার্যকর হবে না spec

যে কোনও হারে, আপনাকে রুবি ব্যবহার করে চালানো দরকার। আরএসপেক কোডটি আপনার জন্য পরীক্ষা চালানোর জন্য যথেষ্ট চালাক।

উদাহরণ:

ruby myclass_spec.rb

2
এইভাবে ফাইলের মধ্যে একটি পরীক্ষা চালানো কি সম্ভব?
ইয়ান ভাগান

12

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

এটি প্রদর্শিত হয় যে রত্নটি রক্ষণাবেক্ষণ করা হয়নি, শেষ প্রতিশ্রুতি ছিল 5 বছর আগে!
thegreendroid

10

রুবি ১.৯.২ এবং রেল এর একটি নির্দিষ্ট ফাইল চালানোর জন্য সহজ উপায় রয়েছে:

  রুবি -I spec spec / মডেল / user_spec.rb

ব্যাখ্যা:

  • rubyকমান্ড যতো তাড়াতাড়ি হতে থাকে rakeকমান্ড
  • -I spec অর্থ "ফাইলগুলি সন্ধান করার সময় 'স্পেক' ডিরেক্টরিটি অন্তর্ভুক্ত করুন"
  • spec/models/user_spec.rb ফাইলটি আমরা চালাতে চাই।

কিছু অতিরিক্ত বিকল্প দিয়ে আপনি কি সেই ফাইলের মধ্যে একটি পরীক্ষা চালাতে পারবেন?
ইয়ান ভাগান

10

আপনার সমস্ত আরএসপেক ফাইল চালাতে :rspec

দ্রষ্টব্য: আপনি অবশ্যই আপনার প্রকল্পের মূল হতে হবে

একটি আরএসপেক ফাইল চালাতে :rspec 'path_to/spec.rb'

দ্রষ্টব্য: আপনার পাথের সাথে 'path_to / spec.rb' প্রতিস্থাপন করুন। উদ্ধৃতি চিহ্নগুলি alচ্ছিক।

চালানোর জন্য এক rspec পরীক্ষা একটি ফাইল থেকে:rspec 'path_to/spec.rb:7'

দ্রষ্টব্য: 7 লাইন নম্বর যেখানে পরীক্ষা শুরু হয়


5

এই উদাহরণগুলির কোনও কাজ করতে আমার সমস্যা হয়েছিল, কারণ পোস্টটি পুরানো এবং আদেশগুলি পরিবর্তিত হয়েছে?

কিছুক্ষন পোকার পরে আমি এই কাজগুলি দেখতে পেলাম:

আরএসপেক স্পেক / মডেল / ইউজার_স্পেক.আরবি

এটি কেবল একটি একক ফাইল চালাবে এবং টার্মিনালে দরকারী আউটপুট সরবরাহ করে।


গৃহীত উত্তরের একটি মন্তব্যে এটি উল্লেখ করা হয়েছিল। হ্যাঁ, আমি মনে করি এই পোস্টটি এতই পুরানো যে কমান্ডের নাম পরিবর্তন হয়েছে।
জোনাথন ট্রান

4

specky.vim


3

বিকল্পভাবে, অটোস্টেস্ট একবার দেখুন।

কমান্ড উইন্ডোতে অটোস্টেস্ট চালানোর অর্থ হ'ল আপনি যখনই এটি সংরক্ষণ করবেন অনুমিত ফাইলটি কার্যকর করা হবে। এছাড়াও, যখন আপনি যে ফাইলটি নির্দিষ্ট করছেন সে চালানো হবে।

উদাহরণস্বরূপ, যদি আপনার কাছে person_spec.rb নামে পরিচিত একটি মডেল ফাইল এবং এটি person.rb নামে নির্দিষ্ট করা একটি মডেল ফাইল থাকে, তবে আপনি যখনই এই সম্পাদনা থেকে এই ফাইলগুলির কোনওটি সংরক্ষণ করেন, তখন অনুমিত ফাইলটি কার্যকর হবে।


3

যদিও এই প্রশ্নের পক্ষে অনেক দুর্দান্ত উত্তর লেখা হয়েছিল, তাদের কোনওটিই আরএসপেকtags পদ্ধতির ব্যবহার করে না ।

আমি বিভিন্ন ফাইলগুলিতে এক বা একাধিক চশমা চালানোর জন্য ট্যাগগুলি ব্যবহার করি - কেবলমাত্র আমার বর্তমান বিকাশ কাজের সাথে সম্পর্কিত।

উদাহরণস্বরূপ, আমি "বর্তমান" মান সহ ট্যাগ "দেব" ট্যাগটি যুক্ত করছি:

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

তাহলে আমি দৌড়াচ্ছি

bundle exec rspec . --tag dev:current

পৃথক চশমা বা গোষ্ঠীতে বিভিন্ন ট্যাগ / মান সেট করা যেতে পারে।


2

বলুন, আপনি টোডো তৈরির জন্য পরীক্ষা চালাচ্ছেন। আপনি সর্বদা নীচে হিসাবে crete_spec.rb ফাইলটি ব্যবহার করে সেই নির্দিষ্ট টোডো স্পেক কোডটি চালাতে পারেন।

      rspec/spec/features/controller/spec_file_name.rb

   Example:

   Creating  rspec spec/features/todos/create_spec.rb
   Editing   rspec spec/features/todos/edit_spec.rb
   Deleting  rspec spec/features/todos/destroy_spec.rb

আপনি যদি একক সংক্ষেপে সমস্ত চশমা চালাতে চান।

   rspec 

আপনি যদি কোনও নির্দিষ্ট নিয়ামক ব্যবহারকারীর সমস্ত চশমা চালাতে চান তবে এটি।

  rspec/spec/feaures/controller_name

  Example:   rspec/spec/features/todos

আশা করি এটি আপনাকে আরও বোঝার সুযোগ দেয়!

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