আরএসপেক: বর্ণনা, প্রসঙ্গে, বৈশিষ্ট্য, দৃশ্যের বর্ণনা দাও?


উত্তর:


149

contextজন্য একটি alias হয় describe, তাই তারা বৈশিষ্ট্যগুলি সমতুল্য। আপনি এগুলি বিনিময়যোগ্যভাবে ব্যবহার করতে পারেন, কেবলমাত্র পার্থক্য হ'ল আপনার স্পেক ফাইলটি কীভাবে পড়বে। উদাহরণস্বরূপ পরীক্ষার আউটপুটটিতে কোনও পার্থক্য নেই। আরএসপেক বইটি বলে:

"আমরা describe()জিনিস এবং context()প্রসঙ্গের জন্য ব্যবহার করার ঝোঁক "।

ব্যক্তিগতভাবে আমি ব্যবহার describeকরতে পছন্দ করি তবে লোকেরা কেন পছন্দ করে তা আমি দেখতে পারি context

featureএবং scenarioক্যাপাইবারার একটি অংশ, এবং আরএসপেক নয়, এবং এটি গ্রহণযোগ্যতা পরীক্ষার জন্য ব্যবহার করার জন্য বোঝানো হয়েছে। featureসমতূল্য describe/ context, এবং scenarioসমতুল্য it/ example

ক্যাপিবারা সঙ্গে তুমি লেখা গ্রহণযোগ্যতা পরীক্ষা ব্যবহার করেন তাহলে feature/ scenarioসিনট্যাক্স, যদি ব্যবহার করবেন describe/ itসিনট্যাক্স।


1
স্যাম বিষয়টির দিকে রয়েছে এবং এখানে বৃহত্তর বিশদ এবং দুর্দান্ত উদাহরণগুলির সাথে একটি লিঙ্ক রয়েছে, বিশেষ করে ডিপিএল-এ নির্মিত ক্যাপাইবারার বিভাগটিতে (ডোমেন নির্দিষ্ট ভাষায়): github.com/jnicklas/capybara#used-capybara-with-rspec
স্পার্টা সিক্সিজেরো

36

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

আরএসপেক সোর্স কোড অনুসারে, "প্রসঙ্গ" হ'ল "বর্ণনা" এর একটি উপাত্ত পদ্ধতি, যার অর্থ এই দুটি পদ্ধতির মধ্যে কোনও কার্যকরী পার্থক্য নেই। তবে, একটি প্রাসঙ্গিক পার্থক্য রয়েছে যা উভয়টি ব্যবহার করে আপনার পরীক্ষাগুলি আরও বোধগম্য করতে সহায়তা করবে।

"বর্ণনা" করার উদ্দেশ্য হ'ল একটি কার্যকারিতা বিরুদ্ধে টেস্টের একটি সেট মোড়ানো এবং "প্রসঙ্গ" একই রাষ্ট্রের অধীনে একটি কার্যকারিতার বিরুদ্ধে পরীক্ষার একটি সেট মোড়ানো।

সুতরাং, এই নীতির উপর নির্ভর করে আপনি এই জাতীয় একটি লিখিত লিখবেন:

#
# The feature/behaviour I'm currently testing
#
describe "item ordering" do
  
  # 1st state of the feature/behaviour I'm testing
  context "without a order param" do
    ...
  end

  # 2nd state of the feature/behaviour I'm testing
  context "with a given order column" do
    ..
  end

  # Last state of the feature/behaviour I'm testing
  context "with a given order column + reverse" do
    ..
  end
end

এটি একটি সাধারণভাবে গৃহীত নিয়ম কিনা তা নিশ্চিত নই তবে আমি এই পদ্ধতিকে স্পষ্ট এবং উপলব্ধি করা বেশ সহজ বলে মনে করি।


1
বর্ণনা / প্রসঙ্গে এটি একটি খুব ভাল উত্তর। তবে আপনি বৈশিষ্ট্য / পরিস্থিতি সম্পর্কে প্রশ্নের অর্ধেক ভুলে গেছেন - তবে আমি মনে করি যে আপনি বর্ণনা / প্রসঙ্গে যেভাবে নির্দেশ করেছেন ঠিক সেভাবেই সেগুলি ব্যবহার করা যেতে পারে (এবং হওয়া উচিত)।
আরএমচারি

আপনি যদি বৈশিষ্ট্য / দৃশ্যের ব্যাখ্যা দিয়ে এটি প্রসারিত করেন তবে দুর্দান্ত হবে!
গ্রেডফক্স

0

দস্তাবেজ অনুসারে পিয়েরের দুর্দান্ত উত্তরের উপর সম্প্রসারণ :

বৈশিষ্ট্য এবং দৃশ্যপট ডিএসএল যথাক্রমে বর্ণনার সাথে মিলিত হয় এবং এটি। এই পদ্ধতিগুলি কেবলমাত্র উপমা যা বৈশিষ্ট্যযুক্ত চশমাটিকে গ্রাহক এবং গ্রহণযোগ্যতা পরীক্ষা হিসাবে আরও পড়তে দেয়।

সুতরাং মোচা পদগুলির সাথে পরিচিতদের জন্য এবং এটি (যা কোনও ব্যবহারকারীর দৃষ্টিকোণ থেকে একটি পরীক্ষার আচরণের বর্ণনা দেওয়ার পক্ষে আরও উপযুক্ত hence তাই মোচা প্রাথমিকভাবে ফ্রন্ট এন্ড টেস্টিং ফ্রেমওয়ার্ক হিসাবে কাজ করে):

  • সর্বদা এবং শুধুমাত্র ব্যবহার করতে describeএবং itবা অন্য একটি জুড়ি চয়ন করুন
  • কোনও নির্দিষ্ট অ্যাপ্লিকেশন স্থিতিতে একাধিক দাবি / পরীক্ষাগুলির প্রয়োজন এমন itকোনও contextব্লকের ভিতরে ব্যবহার করতে বেছে নিন

দ্বিতীয় বিকল্পটি দিয়ে আপনি এখনও "... মোড়ানো [পিং] একই রাষ্ট্রের অধীনে একটি কার্যকারিতার বিরুদ্ধে পরীক্ষার একটি সেট" এর উদ্দেশ্যটি অনুসরণ করতে পারেন।

সুতরাং আপনার পরীক্ষাগুলি এর মতো দেখতে পারে:

#
# The feature/behaviour I'm currently testing
#
describe "item ordering" do

  # 1st state of the feature/behaviour I'm testing
  context "without an order param" do
    # 1st and only test we want to run in this state
    it "asks the user for missing order param" do
     ...
    end
  end

  # 2nd state of the feature/behaviour I'm testing
  context "with an invalid order param" do
    # 1st test we want to run in this state
    it "validates and rejects order param" do
      ...
    end
    # 2nd test we want to run in this state
    it "returns an error to user" do
      ...
    end
  end

  # 3rd state of the feature/behaviour I'm testing with multiple tests
  context "with a valid order param" do
    it "validates and accepts order param" do
      ...
    end
    it "displays correct price for order" do
      ...
    end
    unless being_audited
      it "secretly charges higher price to user" do
        ...
      end
    end
  end
end

এইভাবে আপনি এড়িয়ে যান feature কীওয়ার্ডটি পুরোপুরি , যা আপনি নির্দিষ্ট ফ্রন্ট এন্ড বৈশিষ্ট্যগুলির জন্য ব্যবহার করতে চাইতে পারেন বা আপনি যদি এফডিডি (বৈশিষ্ট্যযুক্ত চালিত বিকাশ) করছেন, যা কারওর জন্য অস্বস্তি বোধ করতে পারে। আপনার বিকাশকারী দলকে এখানে ইনপুট দেওয়ার জন্য জিজ্ঞাসা করুন।

ক্যাভেট: সর্বদা শিল্পের মান মেনে চলেন না, ভক্সওয়াগন দর্শনের পরে যদি আমরা আমাদের সমস্ত পরীক্ষার মডেলিং করি তবে কল্পনা করুন?

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