আমার 'আহ-হা!' রুবি এবং পাগল পরীক্ষার সম্পর্কে মুহূর্ত আসে যখন আমি সত্যিই বসে, বিষয় উপর নির্ধারক সম্পদ পড়া Rspec এবং শসা বই। আমি শশা সম্পর্কে আপনার প্রাথমিক ঘৃণা ভাগ করে নিয়েছি, কিন্তু তখন আমি বুঝতে পারি যে আমি ছবিটি বেশ ভুল কোণ থেকে দেখছি।
মূলত, শসা বিডিডি সম্পর্কে (আচরণ চালিত বিকাশ) - আপনি নিজের বৈশিষ্ট্যগুলি পরিকল্পনা করতে, আপনি পরবর্তী কাজ করতে যাচ্ছেন শসা ব্যবহার করেন। হুম, এর পরে আপনি চান ব্যবহারকারীরা কোনও ফোরামে বা কোনও কিছুতে (যেমন একটি উদাহরণ চুরি করতে;) পোস্ট প্রচার করতে সক্ষম হন তাই আপনি কিছু সহজ লেখেন।
Given I am logged in
And I can see the post "BDD is awesome"
When I vote the post up
Then the post should have one more vote
And the page should show a message thanking me for my vote.
নোট করুন যে কোনও কিছুতে কোড সম্পর্কিত কোনও উল্লেখ নেই। এটি আপনার পদক্ষেপে আসে। আপনি যখন নিজের কোডটি রিফ্যাক্ট করেন তখন আপনার ধাপের সংজ্ঞাগুলি পরিবর্তন করতে হতে পারে তবে আচরণ (আপনার বৈশিষ্ট্য) কখনই পরিবর্তন করার প্রয়োজন হবে না।
এখন প্রতিবার আপনি যখন আপনার শসা বৈশিষ্ট্যটি চালাবেন, আপনি কীভাবে টিডিডি (পরীক্ষিত চালিত বিকাশ) ব্যবহার করে বৈশিষ্ট্যটি পরীক্ষা করতে পারবেন তার নেতৃত্ব দেওয়া হবে। এটি আরএসপেক ব্যবহার করে নিম্ন স্তরে করা হয়।
প্রথম রান - আমার প্রথম পদক্ষেপের সংজ্ঞা অপরিজ্ঞাত। এটিকে ব্যবহারকারী_স্টেপস.আরবি বা এমনকি সেশন_স্টেপস.আরবিতে সংজ্ঞায়িত করতে ব্লকটি অনুলিপি করুন কারণ এটি ব্যবহারকারী এবং তাদের সেশনগুলির সাথে সম্পর্কিত। এখন, আপনি কীভাবে সংজ্ঞা দিন যে কোনও ব্যবহারকারী লগ ইন করেছেন? আপনি তাদের লগইন প্রক্রিয়া মাধ্যমে নিতে পারেন।
Given /^I am logged in$/ do
visit login_path
fill_in :name, :with => 'Joe'
fill_in :password, :with => 'Password'
click_button 'submit'
end
সব খুশি হওয়া উচিত। দ্বিতীয় ধাপ.
Given /^I can see the post "(.+)"$/ do |name|
visit post_path(Post.find_by_name(name))
end
আবার বেশ সহজ। মনে রাখবেন যে আমরা যদি আমাদের লগইন প্রক্রিয়াটি পুরোপুরি আবার করি বা আমাদের পোস্টগুলি কীভাবে সংজ্ঞায়িত ও দেখানো হয়, আমাদের আচরণ পরিবর্তন করতে হবে না। তৃতীয় পদক্ষেপ।
When /^I vote the post up$/ do
pending
end
এখানে আপনি নতুন কার্যকারিতা সম্পর্কে কথা বলতে শুরু করেছেন তবে এটি কীভাবে কাজ করবে তা আপনি যথেষ্ট জানেন না। আপনি কিভাবে একটি পোস্ট আপ ভোট দিতে? আপনি একটি +1 বা কোনও কিছুর ছবিতে ক্লিক করতে পারেন, যা একটি নিয়ামককে একটি এজাক্স পোস্ট করে, যা জেএসওএন, বা এমন কিছু ফেরত দেয়। সুতরাং এখন আপনি খাঁটি আরএসপেক পরীক্ষায় যেতে পারেন।
- আপনার অবস্থানটি +1 চিত্র প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য পরীক্ষা করুন,
- আপনার নিয়ামকটিকে পরীক্ষা করুন যে এটি সঠিক ফর্ম্যাটটির প্রদত্ত এজাক্স অনুরোধটি পেয়ে গেলে এটি সঠিকভাবে আচরণ করে (সুখী এবং অসুখী পথ উভয়ই - যদি কোনও অবৈধ পোস্ট আইডি গৃহীত হয়? ব্যবহারকারী যদি দিনে তাদের 25 টি আপোভ ব্যবহার করে থাকে তবে কী ঘটে? এটি কি ভোটের সংখ্যা সঠিকভাবে বৃদ্ধি করে?)
- আপনার জাভাস্ক্রিপ্টটি পরীক্ষা করুন যা সঠিক ফর্ম্যাটে জেএসএনের একটি ব্লব দেওয়ার সময় এটি সঠিকভাবে প্রতিক্রিয়া জানায় (এটি ব্যবহার করা হয়েছে তা দেখানোর জন্য এটি +1 চিত্র আপডেট করে? (Google+ এর কথা এখানে ভাবছেন ...) এটি কী ধন্যবাদ বার্তাটি দেখায়? ইত্যাদি )
এগুলি সমস্ত আচরণকে প্রভাবিত করে না - তবে আপনি যখন নিম্ন স্তরের পরীক্ষার সাথে কথা বলার কাজ শেষ করেন, কোনও পোস্ট কীভাবে ভোটদান করবেন তার পদক্ষেপ সংজ্ঞা পূরণ করা তুচ্ছ হবে। এটি হিসাবে সহজ হতে পারে click_link '+1'
। এবং বাকি পদক্ষেপগুলি ফলাফলগুলি পরীক্ষা করছে যা আবার করা সহজভাবে হওয়া উচিত। এবং আপনি যখন কাজটি শেষ করেন, তখন আপনি জানবেন আপনার বৈশিষ্ট্যটি সম্পূর্ণ এবং সমাপ্ত। যদি প্রয়োজনীয় আচরণ পরিবর্তন হয়, আপনি নিজের বৈশিষ্ট্যটি টুইঙ্ক করতে পারেন, অন্যথায় আপনি নির্ভুল সুরক্ষায় আপনার বাস্তবায়ন কোডটি টুইঙ্ক করতে পারেন।
আশা করি এটা বোধ গম্য। এটি সবই আমার মাথার শীর্ষে চলে গেছে, তবে আমি মনে করি এটি বিডিডি এবং টিডিডির মধ্যে পার্থক্য প্রদর্শন করে এবং কেন শসা এবং আরএসপেক বিভিন্ন প্রয়োজন বজায় রাখে।