উপহাস কী?


উত্তর:


598

প্রস্তাবনা: আপনি বিশেষ্য খোঁজা যদি উপহাস অভিধানে আপনি পাবেন শব্দের সংজ্ঞা এক যে কিছু অনুকরণ করে দিলাম


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

সংক্ষেপে, মশকরা এমন বস্তু তৈরি করছে যা বাস্তব বস্তুর আচরণ অনুকরণ করে।


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

মক হ'ল স্টাবের মতো তবে পরীক্ষাটি এটি যাচাইও করবে যে পরীক্ষার অধীনে থাকা বস্তুটি প্রত্যাশাকে মাকে ডাকে। পরীক্ষার অংশটি যাচাই করছে যা মোক সঠিকভাবে ব্যবহৃত হয়েছিল।

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

পরিবর্তে আপনি যদি যাচাই করতে চান যে পরীক্ষার অধীনে থাকা অবজেক্টটি ডাটাবেসটিতে কিছু নির্দিষ্ট ডেটা লিখেছে তবে আপনাকে ডাটাবেসকে উপহাস করতে হবে। আপনার পরীক্ষাটি তখন ডাটাবেস মোককে কী লেখা হয়েছিল সে সম্পর্কে দৃser়তার সাথে যুক্ত করে।


18
এটি একটি ভাল উত্তর, তবে এটি অযৌক্তিকভাবে বস্তুগুলির সাথে উপহাস করার ধারণাটিকে সীমাবদ্ধ করে । "অবজেক্ট" "" ইউনিট "এর সাথে প্রতিস্থাপন করা এটিকে আরও সাধারণ করে তুলবে।
Rogério

1
আমি স্টাব বনাম মোকের পার্থক্য বুঝতে পারি। কেবলমাত্র যদি আপনি নিজের কেসগুলি স্টাব দিয়ে পরীক্ষা করে থাকেন এবং এটি পাস হয়ে যায় তবে আপনি কী সিদ্ধান্ত নিতে পারবেন না যে আপনি ইতিমধ্যে স্টাবটি ব্যবহার করছেন তাই আপনার আর যাচাইকরণের দরকার নেই ?
মধু

91

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

tl; dr এটি মূল শ্রেণীর উদাহরণ। এতে অন্যান্য ডেটা রয়েছে যাতে আপনি ইঞ্জেকশন করা অংশগুলি পরীক্ষা করে এড়াতে এবং সম্পূর্ণরূপে আপনার শ্রেণি / ক্রিয়াকলাপের বাস্তবায়ন বিশদ পরীক্ষা করার উপর মনোনিবেশ করেন ।

একটি সহজ উদাহরণ:

class Foo {
    func add (num1: Int, num2: Int) -> Int { // Line A 
        return num1 + num2 // Line B
    }
}

let unit = Foo() // unit under test
assertEqual(unit.add(1,5),6)

আপনি দেখতে পাচ্ছেন যে, আমি লাইনএ পরীক্ষা করছি না অর্থাৎ আমি ইনপুট পরামিতিগুলিকে যাচাই করছি না। আমি num1, num2 কোনও পূর্ণসংখ্যা কিনা তা যাচাই করে দেখছি না। এর বিরুদ্ধে আমার কোন দাবি নেই।

আমি শুধুমাত্র কিনা দেখতে LineB (আমার পরীক্ষা করছি বাস্তবায়ন ) ব্যঙ্গ মান দেওয়া 1এবং 5হিসাবে আমি আশা করছে।

স্পষ্টতই আসল কথায় এটি আরও জটিল হয়ে উঠতে পারে। প্যারামিটারগুলি কোনও ব্যক্তি, ঠিকানার মতো কাস্টম অবজেক্ট হতে পারে বা বাস্তবায়নের বিশদটি এককটির চেয়ে বেশি হতে পারে +। তবে পরীক্ষার যুক্তি একই হবে।

নন-কোডিং উদাহরণ:

ধরে নিন আপনি একটি মেশিন তৈরি করছেন যা বিমানবন্দরের সুরক্ষার জন্য বৈদ্যুতিন ডিভাইসের প্রকার এবং ব্র্যান্ডের নাম সনাক্ত করে। মেশিনটি এটি তার ক্যামেরা দিয়ে যা দেখে তা প্রক্রিয়াজাত করে এটি করে।

এখন আপনার ম্যানেজার দরজা দিয়ে হাঁটেন এবং আপনাকে এটি ইউনিট-টেস্ট করতে বলে।

তারপরে আপনি একজন বিকাশকারী হিসাবে আপনি 1000 এর সাথে প্রকৃত বস্তু যেমন ম্যাকবুক প্রো, গুগল নেক্সাস, একটি কলা, একটি আইপ্যাড ইত্যাদির সামনে আনতে পারেন এবং পরীক্ষা করে দেখুন যে এটি সব কার্যকর হয় কিনা।

তবে আপনি অনুরূপ চেহারাযুক্ত ম্যাকবুক প্রো (সত্যিকারের অভ্যন্তরীণ অংশবিহীন) বা এর সামনে একটি প্লাস্টিকের কলা মতো বিদ্রূপযুক্ত জিনিসগুলিও ব্যবহার করতে পারেন । আপনি 1000 রিয়েল ল্যাপটপে বিনিয়োগ এবং কলা পচা থেকে নিজেকে বাঁচাতে পারেন।

মুল বক্তব্যটি হল আপনি কলাটি নকল কিনা তা পরীক্ষা করার চেষ্টা করছেন না। বা ল্যাপটপটি নকল কিনা তা পরীক্ষাও করা হচ্ছে না। আপনার মেশিনটি একবার কলা দেখলে এটি বলবে not an electronic deviceএবং ম্যাকবুক প্রো-এর জন্য এটি বলবে: আপনি যা করছেন তা পরীক্ষা করছে Laptop, Apple। মেশিনের কাছে, এটি সনাক্তকরণের ফলাফলটি ভুয়া / উপহাস করা ইলেক্ট্রনিক্স এবং বাস্তব ইলেকট্রনিক্সগুলির জন্য একই হওয়া উচিত

উপরে বর্ণিত যুক্তিটি বাস্তব কোডের একক-পরীক্ষার ক্ষেত্রেও প্রযোজ্য। এটি হ'ল আসল ইনপুট (এবং মিথস্ক্রিয়া) বা উপহাস থেকে প্রাপ্ত প্রকৃত মানগুলির সাথে একই কাজ করা উচিতইউনিট-পরীক্ষার সময় আপনি ইনজেকশনের মান দেয়। এবং ঠিক কীভাবে আপনি ইউনিট-টেস্টগুলি (এবং উপহাস করে) একটি সত্যিকারের কলা বা ম্যাকবুক ব্যবহার থেকে নিজেকে বাঁচায় আপনি এমন কিছু করার হাত থেকে নিজেকে বাঁচান যা আপনার সার্ভারকে 500, 403, 200 ইত্যাদি স্থিতি কোড ফিরিয়ে আনতে বাধ্য করে (জোর করে আপনার সার্ভারটি 500 টি ট্রিগার করতে কেবল যখন সার্ভারটি ডাউন থাকে, যখন 200 সার্ভারটি চালু থাকে। যদি আপনাকে সার্ভারের ওপরে এবং ডাউন স্যুইচ করার মধ্যে অবিচ্ছিন্নভাবে 10 সেকেন্ড অপেক্ষা করতে হয় তবে 100 নেটওয়ার্ক কেন্দ্রিক পরীক্ষা চালানো কঠিন হয়ে পড়ে)। সুতরাং পরিবর্তে আপনি স্ট্যাটাস কোড 500, 200, 403 ইত্যাদি সহ একটি প্রতিক্রিয়া ইনজেকশন / উপহাস করুন এবং আপনার ইউনিট / ফাংশনটিকে ইনজেকশনের / উপহাসের মান দিয়ে পরীক্ষা করুন।

কোডিং উদাহরণ:

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

একটি নেটওয়ার্ক কল একটি JSON প্রতিক্রিয়া সহ 404, 500, 200, 303, ইত্যাদি বিভিন্ন স্থিতি কোডগুলি ফিরিয়ে দিতে পারে।

মনে হচ্ছে আপনার অ্যাপ্লিকেশনটি তাদের সকলের জন্য কাজ করবে (ত্রুটির ক্ষেত্রে, আপনার অ্যাপ্লিকেশনটিকে তার প্রত্যাশিত ত্রুটি ছুঁড়ে ফেলা উচিত)। আপনি কি উপহাস না আপনি তৈরি নেটওয়ার্কের প্রতিক্রিয়া (ক JSON ফাইল সঙ্গে একটি 200 কোডের মত) 'বাস্তব থেকে কল্পিত-অনুরূপ' রয়েছে এবং আপনার কোড পরীক্ষা ছাড়া 'বাস্তব নেটওয়ার্কের কল করার এবং আপনার নেটওয়ার্ক প্রতিক্রিয়ার জন্য অপেক্ষা করার। আপনি সব ধরণের নেটওয়ার্ক প্রতিক্রিয়াগুলির জন্য ম্যানুয়ালি হার্ডকোড / নেটওয়ার্ক প্রতিক্রিয়া ফিরিয়ে আনবেন এবং আপনার অ্যাপটি আপনার প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা দেখুন। (আপনি কখনই 200 কে ভুল ডেটা দিয়ে ধরে নিচ্ছেন / পরীক্ষা করবেন না , কারণ এটি আপনার দায়িত্ব নয়, আপনার অ্যাপ্লিকেশনটিকে সঠিক 200 দিয়ে পরীক্ষা করা বা 400, 500 এর ক্ষেত্রে আপনার অ্যাপ্লিকেশন সঠিক ত্রুটি ছুঁড়েছে কিনা তা পরীক্ষা করে দেখুন)

কল্পিত — বাস্তবের অনুরূপ এটি তৈরি করা উপহাস হিসাবে পরিচিত।

এটি করার জন্য, আপনি নিজের আসল কোডটি ব্যবহার করতে পারবেন না (আপনার আসল কোডটিতে প্রাক-sertedোকানো প্রতিক্রিয়া নেই, তাই না?) আপনাকে অবশ্যই এটিতে কিছু যুক্ত করতে হবে, ডামি ডেটা ইনজেকশন / inোকাতে হবে যা সাধারণত প্রয়োজন হয় না (বা আপনার শ্রেণীর কোনও অংশ)।

তাই আপনি যদি একটি দৃষ্টান্ত মূল শ্রেণী তৈরি এবং যোগ যাই হোক না কেন আপনি এটা করতে হবে এবং তারপর পরীক্ষা (এখানে নেটওয়ার্কের HTTPResponse, ডাটা বা ব্যর্থতা ক্ষেত্রে হচ্ছে, আপনি সঠিক errorString, HTTPResponse পাস) ব্যঙ্গ বর্গ।

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

বলা বাহুল্য, আপনি প্রতিটি নেটওয়ার্ক প্রতিক্রিয়া আলাদাভাবে পরীক্ষা করেন।


আমার মনে সর্বদা একটি প্রশ্ন ছিল যা ছিল: চুক্তি / সমাপ্তি পয়েন্ট এবং মূলত আমার এপিআইগুলির জেএসওএন প্রতিক্রিয়া ক্রমাগত আপডেট হয়। আমি বিবেচনা করে নেওয়া ইউনিট পরীক্ষাগুলি কীভাবে লিখতে পারি?

এ সম্পর্কে আরও বিস্তারিত জানাতে: আসুন আমরা বলি যে মডেলটির জন্য একটি কী / ক্ষেত্রের প্রয়োজন username। আপনি এটি পরীক্ষা করেন এবং আপনার পরীক্ষা পাস হয়। 2 সপ্তাহ পরে ব্যাকএন্ড কীটির নাম পরিবর্তন করে id। আপনার পরীক্ষা এখনও পাস। ঠিক আছে? অথবা না?

মোকগুলি আপডেট করার দায়িত্ব কী ব্যাকএন্ড বিকাশকারীর? এটি কী আমাদের চুক্তির অংশ হওয়া উচিত যে তারা আপডেট মক সরবরাহ করে?

উপরের ইস্যুটির উত্তরটি হ'ল: ইউনিট টেস্ট + ক্লায়েন্ট-পার্শ্ব বিকাশকারী হিসাবে আপনার বিকাশ প্রক্রিয়াটি / পুরানো বিদ্রূপের প্রতিক্রিয়া ধরা উচিত। আমাকে জিজ্ঞাসা করলে কেমন হয়? ঠিক আছে উত্তর:

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

এর অর্থ এই যে ব্যাকএন্ডে বলতে হবে না: "আরে আমরা মক আপডেট করেছি" ... এটি শেষ পর্যন্ত আপনার কোড বিকাশ / ডিবাগিংয়ের মাধ্যমে ঘটে। ‌ّ কারণ এটি সবই উন্নয়ন প্রক্রিয়ার অংশ! যদিও যদি ব্যাকএন্ড আপনার জন্য উপহাসের প্রতিক্রিয়া সরবরাহ করে তবে এটি আরও সহজ।

আমার সম্পূর্ণ বক্তব্যটি হ'ল (যদি আপনি তত্ক্ষণাত মেকড এপিআই প্রতিক্রিয়াটি স্বয়ংক্রিয়ভাবে গ্রহণ করতে না পারেন) কিছু মানুষের মিথস্ক্রিয়া প্রয়োজন যেমন জেএসএনগুলির ম্যানুয়াল আপডেট এবং সেগুলির মানগুলি আপ টু ডেট রয়েছে তা নিশ্চিত করার জন্য সংক্ষিপ্ত সভা করা আপনার প্রক্রিয়াটির অংশ হয়ে উঠবে will

এই বিভাগটি আমাদের কোকোএইড মেইটআপ গ্রুপে একটি অল্প আলোচনার জন্য ধন্যবাদ রচনা করা হয়েছিল


কেবল আইওএস ডিভাসের জন্য:

বিদ্রূপের একটি খুব ভাল উদাহরণ হ'ল নাতাশা মুরাসচেভের প্র্যাকটিকাল প্রোটোকল-ওরিয়েন্টেড কথাবার্তা । স্লাইডগুলি প্রকৃত ভিডিও with‍♂️ এর সাথে সিঙ্কের বাইরে চলে যেতে পারে, তবে মাত্র 18:30 মিনিটে চলে যান ♂️

প্রতিলিপি থেকে আমি এই অংশটি সত্যই পছন্দ করি:

কারণ এটি পরীক্ষা করা হচ্ছে ... আমরা এটি নিশ্চিত করতে চাই না যে getফাংশনটি Gettableডেকে আনা হয়েছে, কারণ এটি ফিরে আসতে পারে এবং ফাংশনটি তাত্ত্বিকভাবে কোথাও থেকে খাদ্য আইটেমগুলির একটি অ্যারে নির্ধারণ করতে পারে । আমাদের এটি নিশ্চিত করা দরকার যে এটি বলা হয়েছে;


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

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

@ থিংকডিজিটাল গুড এপিআই সরবরাহকারীদের কাছে ভাল রিলিজ নোট রয়েছে এবং পরিবর্তনগুলি সঠিকভাবে যোগাযোগ করুন, যদি আপনার কাছে এই চ্যানেলটি না থাকে তবে সম্ভবত আপনার সময়টি একটি মিটিংয়ে বসে আলোচনা করার জন্য সময় এসেছে | ভাল বিকাশকারীরা সর্বদা একটি নতুন সংস্করণটির এপিআই পরিবর্তনগুলি অনুসন্ধান করবে এবং কেবল এপিআই সংস্করণটি আপগ্রেড করবে। আপনার কি এপিআই সংস্করণ রয়েছে? যদি তাদের মধ্যে কেউই এটি না ধরে থাকে তবে QAing এর পরে আপনি এটি সন্ধান করতে পারেন, তারপরে আপনার পরীক্ষাগুলি আপডেট করুন entire পুরো দলের দায়িত্ব। → দায়িত্ব একক দেব: খুব বেশি যত্ন করা উচিত নয়। সার্ভার ত্রুটি ফিরিয়ে দেয় এমন ক্ষেত্রে কেবল হ্যান্ডেল করুন বা সার্ভার ত্রুটি ফিরিয়ে দেয় না তবে জসনকে পার্স করতে পারে না, বা সঠিক কেসটি পরিচালনা করতে পারে না।
মধু

সাড়া দেওয়ার জন্য ধন্যবাদ, হানি! আমার ক্ষেত্রে, আমি পাব.দেবের জন্য একটি ক্লায়েন্ট বজায় রাখছি , যার একটি এপিআই রয়েছে তবে এর মারাত্মক অভাব রয়েছে। এত বেশি যে তাদের অফিসিয়াল এপিআই ব্যবহার করার চেয়ে তাদের সাইটটি স্ক্র্যাপ করে কোনও এপিআই তৈরি করা ভাল ছিল। এ কারণে, সাইটে পরিবর্তনগুলি কোডটি ভেঙে ফেলতে পারে এবং এ ক্ষেত্রে তাদের কাউকে আপডেট করতে বিরক্ত করার প্রয়োজন নেই। সাইটটি ওপেন সোর্স, তবে এটি একটি পৃথক বিষয় যা এআইপিআই বজায় রাখে যা আরও তুচ্ছ ভিত্তিতে করা পরিবর্তনগুলির ভিত্তিতে তৈরি।
থিঙ্কডিজিটাল

32

উপহাস সম্পর্কে ওয়েবে প্রচুর উত্তর এবং ওয়েবে ভাল পোস্ট রয়েছে। আপনি যে জায়গার সন্ধান করতে চাইতে পারেন তা হ'ল মার্টিন ফোলার মকস আরেন্ট স্টবসের পোস্ট যেখানে তিনি বিদ্রূপ করার ধারণা নিয়ে প্রচুর আলোচনা করেছেন।

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


আপনার মূল প্রশ্নে টাইপমকের উল্লেখ রয়েছে, সুতরাং আমি আমার উত্তরটি নীচে রেখেছি:

টাইপমক একটি বাণিজ্যিক উপহাসের কাঠামোর নাম ।

এটি রিনোমকস এবং মোকের মতো ফ্রি মজাদার ফ্রেমওয়ার্কের সমস্ত বৈশিষ্ট্য এবং আরও কিছু শক্তিশালী বিকল্প সরবরাহ করে।

আপনার টাইপমকের প্রয়োজন বা না তা অত্যন্ত বিতর্কিত - আপনি ফ্রি মক্কাগুলি লাইব্রেরি দিয়ে আপনি যে চান তা সর্বাধিক উপহাস করতে পারেন এবং অনেকের যুক্তি রয়েছে যে টাইপমক দ্বারা প্রদত্ত ক্ষমতাগুলি আপনাকে প্রায়শই ভাল এনক্যাপসুলেটেড ডিজাইন থেকে দূরে নিয়ে যায়।

অন্য একটি জবাব হিসাবে বলা হয়েছে যে 'টাইপমকিং' আসলে সংজ্ঞায়িত ধারণা নয়, তবে টাইপমক যে ধরণের বিদ্রূপ করে তা বোঝানো যেতে পারে, সিএলআর প্রোফাইলারকে বাধা দেওয়ার জন্য। নেটটাইম রানটাইম এ কল করে, জাল বস্তুগুলিকে অনেক বেশি ক্ষমতা দেয় (প্রয়োজনীয়তা নয় যেমন ইন্টারফেস বা ভার্চুয়াল পদ্ধতিগুলির প্রয়োজন)।


@ মাসউদ কখনও টাইপমকের কথা উল্লেখ করেনি। তাঁর প্রশ্ন ছিল সাধারণভাবে "টাইপ মকিং" সম্পর্কে।
পিটার লিলিভল্ড

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

9

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

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

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

মক অবজেক্টের উদ্দেশ্য কী?

মোকস বনাম স্টাবগুলি

ইউনিট পরীক্ষা বনাম কার্যকরী পরীক্ষা


7

মশকরা সিউডো-অবজেক্ট তৈরি করছে যা পরীক্ষার জন্য প্রকৃত বস্তুর আচরণ অনুকরণ করে


5

উপহাসের ধরণের উদ্দেশ্য হ'ল পরীক্ষাকে নির্দিষ্ট ইউনিটে বিচ্ছিন্ন করার জন্য নির্ভরতা বিচ্ছিন্ন করা। স্টাবগুলি সরল সার্গেট, অন্যদিকে উপহাসগুলি সরোগেটস যা ব্যবহার যাচাই করতে পারে। একটি উপহাস ফ্রেমওয়ার্ক হ'ল একটি সরঞ্জাম যা আপনাকে স্টাব এবং উপহাস তৈরি করতে সহায়তা করবে।

সম্পাদনা : যেহেতু মূল শব্দটি "টাইপ মকিং" উল্লেখ করেছে আমি এই ধারণাটি পেয়েছি যে এটি টাইপমকের সাথে সম্পর্কিত। আমার অভিজ্ঞতায় সাধারণ শব্দটি কেবল "মশকরা"। দয়া করে নিচে নির্দ্বিধায় নিচে নির্দ্বিধায় বিশেষত টাইপমক

টাইপমোক আইসোলেটর অন্যান্য বিদ্রূপ কাঠামোর থেকে পৃথক হয় যে এটি ফ্লাইতে আমার সংশোধনকারী আইএলকে কাজ করে। এটি এটি অন্যান্য ধরণের ফ্রেমওয়ার্কগুলি উপহাস করতে পারে না এমন ধরণের এবং দৃষ্টান্তগুলিকে মক করতে দেয়। অন্যান্য ফ্রেমওয়ার্কগুলির সাথে এই ধরণের / ঘটনাগুলি উপহাস করার জন্য আপনাকে অবশ্যই নিজের বিমূর্ততা সরবরাহ করতে হবে এবং এগুলি উপহাস করতে হবে।

টাইপমক একটি পরিষ্কার রানটাইম পরিবেশের ব্যয়ে দুর্দান্ত নমনীয়তা সরবরাহ করে। যেভাবে টাইপমক এর ফলাফল অর্জন করে তার পার্শ্ব প্রতিক্রিয়া হিসাবে আপনি টাইপমক ব্যবহার করার সময় মাঝে মাঝে খুব বিস্ময়কর ফলাফল পাবেন।


@ মাসউদ কখনও টাইপমকের কথা উল্লেখ করেনি। তাঁর প্রশ্ন ছিল সাধারণভাবে "টাইপ মকিং" সম্পর্কে।
পিটার লিলিভল্ড

1
@ পিটার: মূল শব্দটি ছিল "টাইপ মকিং কি?"
ব্রায়ান রাসমুসেন

আমি জানি. যেহেতু "টাইপ মকিং" "টাইপমক" এর সমতুল্য নয়, তাই আমি আপনার এবং @ উত্তর উত্তর দুটিই খুঁজে পাই না।
পিটার লিলিভল্ড

1
@ পিটার: আমার অভিজ্ঞতায় সাধারণ শব্দটি "মশকরা", তবে যে কোনও ক্ষেত্রে আমি আমার উত্তরটি আপডেট করে আশাবাদী তা পরিষ্কার করে দিয়েছি। ইনপুট জন্য ধন্যবাদ।
ব্রায়ান রাসমুসেন

3

আমি মনে করি টাইপমোক আইসোলেটর বিদ্রূপ কাঠামোর ব্যবহারটি টাইপমকিং হবে।

এটি এমন একটি সরঞ্জাম যা IoC- কে মাথায় রেখে আপনার কোডটি লেখার প্রয়োজন ছাড়াই ইউনিট পরীক্ষাগুলিতে ব্যবহারের জন্য উপহাস তৈরি করে।


@ মাসউদ কখনও টাইপমকের কথা উল্লেখ করেনি। তাঁর প্রশ্ন ছিল সাধারণভাবে "টাইপ মকিং" সম্পর্কে।
পিটার লিলিভল্ড

3
আসলে, মূল প্রশ্নটিতে "উপহাস" করার আগে "টাইপ" শব্দটি অন্তর্ভুক্ত ছিল তবে এটি পরে সম্পাদনা করা হয়েছিল। এজন্য কয়েকটি উত্তরে টাইপমক সম্পর্কিত নির্দিষ্ট তথ্য রয়েছে।
মার্টিন লিভারেজ

1

যদি আপনার মকটিতে কোনও নেটওয়ার্ক অনুরোধ জড়িত থাকে, তবে অন্য একটি বিকল্প হিট করার জন্য একটি সত্যিকারের পরীক্ষার সার্ভার রয়েছে have আপনি এই পরীক্ষার জন্য একটি অনুরোধ এবং প্রতিক্রিয়া জেনারেট করতে এই পরিষেবাটি ব্যবহার করতে পারেন। http://testerurl.com/


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

আমি এটিকে নিখরচায় হোস্টিংয়ে স্থানান্তরিত করার মতো মনে করি না বলে আমি এটিকে নামিয়ে দিয়েছি। হ্যাঁ, এটি একটি মন্তব্য করা উচিত ছিল। এটি ওপেন সোর্স, সুতরাং লগ করার অনুরোধগুলির বিষয়ে যদি কোনও উদ্বেগ থাকে তবে আপনি নিজেরাই চালাতে পারেন। github.com/captainchung/esterUrl
ম্যাথু চুং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.