আমি কখন মক অবজেক্ট ব্যবহার করব?


14

আমি টিডিডি সম্পর্কে অনেক কিছুই পড়েছি তবে আমার এখনও সন্দেহ আছে। উদাহরণস্বরূপ, আমার কাছে এই ক্লাস ডায়াগ্রামগুলি রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

এটি একটি সহজ উদাহরণ, কেবল টিডিডি এবং মক অবজেক্ট সম্পর্কে শিখতে।

প্রথমে কোন পরীক্ষাটি লিখতে হবে? পণ্য , তারপরে লাইন এবং শেষ, অর্ডার ? যদি আমি এটি করি তবে আমার কি অর্ডার পরীক্ষা করার জন্য লাইন এবং পণ্য ব্যবহার করা উচিত বা আমি মক অবজেক্টগুলি ব্যবহার করব? মক অবজেক্টস কখন ব্যবহার করা উচিত? এক্সপি এবং টিডিডি সহ আমার ইউএমএল ব্যবহার করা উচিত?

আমি এই জিনিসগুলি এখনও পাই না।

উত্তর:


10

চিত্রটি বিবেচনা করে, পণ্যটি একটি বোবা ডেটা ক্লাস, যা পরীক্ষা করার জন্য কোনও কার্যকারিতা নেই। সুতরাং আমি প্রথম লাইনটির (এবং প্রয়োগকরণ, টিডিডি শৈলী) জন্য টেস্টগুলি লিখতে শুরু করব এবং তারপরে নির্ভরতা মইয়ের জন্য অর্ডার করব। উচ্চ স্তরের ক্লাসগুলিতে (অর্থাৎ নিম্ন স্তরের উপর নির্ভরশীল) কাজ শুরু করার আগে আপনার নিম্ন স্তরের ক্লাসগুলি পরীক্ষা করা সাধারণত বুদ্ধিমানের কাজ। এটি বাগগুলি আরও দক্ষ করে তোলে।

আপনাকে মক অবজেক্টগুলি ব্যবহার করতে হবে কিনা তা পরীক্ষিত শ্রেণীর প্রকৃত নির্ভরতার উপর নির্ভর করে। এগুলি যদি এমন সাধারণ ক্লাস হয় যা আপনি সহজেই ইনস্ট্যান্ট করতে এবং আপনার পরীক্ষার জন্য প্রয়োজনীয় কোনও পছন্দসই ডেটা / রাজ্য সেট আপ করতে পারেন তবে আপনার কোনও বিদ্রূপের দরকার নেই। (এটি এখানে আপনার উদাহরণ ডিজাইনের ক্ষেত্রে মনে হয়)) তবে, যদি কোনও নির্ভরতা নিজেই শুরু করতে অসুবিধে হয় / নিজেই বিস্তৃত নির্ভরতা থাকে / অনাকাঙ্ক্ষিত পার্শ্ব প্রতিক্রিয়া থাকে / একটি ডিবি হিসাবে কোনও বাহ্যিক উত্সের উপর নির্ভর করে, তবে তা বোঝা যায় পরিবর্তে একটি মক অবজেক্ট ব্যবহার করতে।


যেমনটি আমি আগেই বলেছিলাম, এটি টিডিডি এবং মক অবজেক্টগুলি সম্পর্কে শিখার জন্য একটি সাধারণ দৃশ্য ছিল ... দুর্দান্ত উত্তর, আপনাকে ধন্যবাদ। এবং ইউএমএল সম্পর্কে কী হবে? আমি কি এড়ানো উচিত?

@ থমাস, ইউএমএল এড়াতে হবে না, এটি টিডিডির সাথে বিরোধ করে না। ইউএমএল ডিজাইনের সমস্যাগুলি দেখার জন্য / যোগাযোগের জন্য খুব ভাল। এটি নির্দিষ্ট উন্নয়ন পর্যায়ে অত্যন্ত কার্যকর হতে পারে। তবে ডিজাইনটি বিকশিত হয়েছে এবং কোডের সাথে সুসংগতভাবে একটি সুন্দর এবং বিস্তারিত ইউএমএল সিস্টেম ডায়াগ্রাম রাখার চেষ্টা করা দ্রুত বোঝা হয়ে উঠতে পারে। সুতরাং যখন আপনার আর প্রয়োজন হবে না তখন এটিকে ফেলে দেওয়ার কথা মনে রাখবেন :-)
পিটার টারিক

1
@ থমাস, বিটিডব্লিউ কনভেনশনটি আপনার দরকারী উত্তরগুলি উত্তরের জন্য উত্তরটির পরবর্তী উপরের তীরটিতে ক্লিক করে :-)
পিটার টারিক

4

আমি এখানে মক অবজেক্টের খুব বেশি প্রয়োজন দেখছি না। অন্যদের দ্বারা নির্দেশিত হিসাবে, আপনার নির্ভরতাগুলি বেশিরভাগ ক্ষেত্রে প্রয়োজন যদি নির্ভরতা সেট আপ করা কঠিন হয়।

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


2

সাধারণত পরীক্ষার জন্য আপনি পরীক্ষার অধীনে সিস্টেম / অবজেক্টটি বিচ্ছিন্ন করতে চান, সুতরাং এর বাইরে থাকা কোনও কিছুকে আপনি উপহাস করবেন। সুতরাং আপনার শ্রেণীর চিত্রটি ব্যবহার করে, যখন কোনও অর্ডার অবজেক্টটি পরীক্ষা করা হয় তখন লাইন অবজেক্টের জন্য একটি মক ব্যবহার করুন। লাইন পরীক্ষা করার সময়, অর্ডার এবং পণ্যগুলির জন্য একটি মোক ব্যবহার করুন। পণ্য পরীক্ষা করার সময়, লাইনের জন্য মোক ব্যবহার করুন।


যেহেতু পণ্য লাইনের উপর নির্ভর করে না, তাই লাইনটির জন্য একটি উপহাস ব্যবহার করার প্রয়োজন নেই (বা উপায়) নেই। লাইন এবং অর্ডার জন্য একই।
পিটার তারেক

2

"টিডিডি হ'ল প্রাথমিকভাবে ডিজাইনের কৌশল যা আপনার উত্স কোডটি ভালভাবে ইউনিট পরীক্ষিত হয়েছে তা নিশ্চিত করার পার্শ্ব প্রতিক্রিয়া সহ" - স্কট ডব্লিউ অ্যাম্বিলার

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

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


2
আমার সবেমাত্র একটি সাধারণ শ্রেণীর চিত্র রয়েছে ...

-1 সুতরাং ডিজাইনের বিষয়ে চিন্তা করা (কোনও শ্রেণীর ডায়াগ্রাম লিখে রেখে দেওয়া) আপনাকে টিডিডি করতে বাধা দেয়? এটা ঠিক প্লেইন ভুল মনে হচ্ছে।
বজর্কে ফ্রেইন্ড-হানসেন

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

কোনও পরীক্ষা বা উত্পাদন কোড ছাড়াই আপনি কীভাবে ডিজাইনটি চূড়ান্ত তা নির্ধারণ করবেন? ধরে নিচ্ছি আপনি এমন কিছু তৈরি করতে চান যা কাজ করে।
জেফো

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