আপনি যখন কোন পরীক্ষা লিখছেন তখন আপনি কী করবেন যখন আপনি পরীক্ষা পাস করার প্রয়োজন সেখানে পৌঁছেছেন এবং আপনি বুঝতে পেরেছেন যে আপনার একটি অতিরিক্ত ক্রিয়াকলাপ প্রয়োজন যা তার নিজস্ব ফাংশনে পৃথক করা উচিত? এই নতুন ফাংশনটিও পরীক্ষা করা দরকার, তবে টিডিডি চক্র বলেছে একটি পরীক্ষা ব্যর্থ করে দিন, তারপরে রিফ্যাক্টরটি পাস করুন। আমি যদি আমার পরীক্ষার পাসটি করার চেষ্টা করছি সেই ধাপে আমি যদি যাই তবে আমার বাস্তবায়নের যে নতুন কার্যকারিতাটি পরীক্ষা করতে হবে তা পরীক্ষা করার জন্য আর একটি ব্যর্থ পরীক্ষা শুরু করার কথা নয়।
উদাহরণস্বরূপ, আমি একটি পয়েন্ট ক্লাস লিখছি যা উইলকোলাইডউইথ ( লাইনসেটমেন্ট ) রয়েছে :
public class Point {
// Point data and constructor ...
public bool CollidesWithLine(LineSegment lineSegment) {
Vector PointEndOfMovement = new Vector(Position.X + Velocity.X,
Position.Y + Velocity.Y);
LineSegment pointPath = new LineSegment(Position, PointEndOfMovement);
if (lineSegment.Intersects(pointPath)) return true;
return false;
}
}
আমি একটি পরীক্ষা লিখছিলাম CollidesWithLine যখন আমি বুঝলাম যে আমি একটি হবে LineSegment.Intersects ( LineSegment ) ফাংশন। তবে, এই নতুন কার্যকারিতাটি তৈরি করতে আমি আমার পরীক্ষার চক্রের যা করছি তা বন্ধ করে দেওয়া উচিত? এটি "রেড, গ্রিন, রিফ্যাক্টর" নীতিটি ভঙ্গ করে বলে মনে হচ্ছে।
আমি শুধু কোডটি সনাক্ত করে যে এর lineSegments ছেদ ভিতরে লেখা উচিত CollidesWithLine ফাংশন এবং refactor এটা পরে এটি কাজ করছে? লাইনসেজমেন্ট থেকে ডেটা অ্যাক্সেস করতে পারছি বলে এই ক্ষেত্রে এটি কাজ করবে তবে এই জাতীয় ডেটা প্রাইভেট থাকার ক্ষেত্রে কী হবে?