ডাটাবেসের সাথে কাজ করার সময় ওও এবং টেস্টেবল থাকা


16

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

  1. ডেটা ব্যাকএন্ড উত্সকে বিমূর্ত করতে load()এবং এর জন্য ইন্টারফেস সহ একটি $ ডেটা_সোর্সে পাস save()করুন। পরীক্ষা করার সময়, একটি আলাদা ডেটা স্টোর পাস করুন।

    $ ব্যবহারকারী = নতুন ব্যবহারকারী ($ mysql_data_source);
    $ ব্যবহারকারী-> লোড ('বব');
    $ ব্যবহারকারী-> সেটনাম ('রবি');
    $ User-> সংরক্ষণ করুন ();
    
  2. এমন একটি ফ্যাক্টরি ব্যবহার করুন যা ডাটাবেস অ্যাক্সেস করে এবং ফলাফল সারিটি ব্যবহারকারীর নির্মাণকারীর কাছে দেয়। পরীক্ষা করার সময়, ম্যানুয়ালি $ সারির প্যারামিটার তৈরি করুন বা ইউজারফ্যাক্ট্রি :: $ ডেটা_সোর্সটিতে অবজেক্টটি উপহাস করুন। (আমি কীভাবে রেকর্ডে পরিবর্তনগুলি সংরক্ষণ করতে পারি?)

    class UserFactory {
        static $data_source;
    
        public static function fetch( $username ) {
            $row = self::$data_source->get( [params] );
    
            $user = new User( $row );
            return $user;
        }
    }
    

আমার পাশেই আমার কাছে ডিজাইন প্যাটার্নস এবং ক্লিন কোড রয়েছে তবে আমি প্রযোজ্য ধারণাগুলি খুঁজতে লড়াই করছি।


উত্তর:


11

সুতরাং আপনি যা বাছাই করতে চান তা হ'ল মার্টিন ফোলার্স ' এন্টারপ্রাইজ অ্যাপ্লিকেশন আর্কিটেকচারের প্যাটার্নস (তিনি এখানে তার ওয়েবসাইটে একটি ক্যাটালগও সরবরাহ করেন )।

এতে তিনি ডেটা অ্যাক্সেস বিমূর্ত করার জন্য বেশ কয়েকটি নিদর্শন বর্ণনা করেছেন। আপনি যে প্রথম পদ্ধতির বর্ণনা করেছেন সেটি হল সক্রিয় রেকর্ড । আপনার দ্বিতীয় পদ্ধতির সারণী ডেটা গেটওয়ের অনুরূপ ।

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

  • অধ্যবসায়ের অজ্ঞতা : তথ্য অ্যাক্সেস কৌশলটিতে অংশ নেওয়ার জন্য ও / আরএম আপনার ব্যবসায়ের সামগ্রীগুলিকে একটি নির্দিষ্ট ইন্টারফেস / শ্রেণি থেকে উত্পন্ন করতে বাধ্য করবে না।
  • রিলেশন ম্যাপিং : আপনার জিনিসগুলির মধ্যে সম্পর্কের মানচিত্র তৈরি করতে সক্ষম হওয়া উচিত (কোনও গ্রাহকের অর্ডার রয়েছে, অর্ডারগুলিতে লাইন আইটেম রয়েছে, লাইন আইটেমগুলির একটি পণ্য রয়েছে ইত্যাদি)
  • হায়ারাকিকাল ম্যাপিং : আপনার ডাটাবেসে ক্লাস হায়ারাকির মানচিত্র তৈরি করতে সক্ষম হওয়া উচিত।
  • অনুসন্ধান সিনট্যাক্স / মানদণ্ড সমর্থন Support : আপনার অবজেক্টের ক্ষেত্রে ডেটাবেসের শর্ত নয়, রান-টাইমে আপনার ক্যোয়ারী তৈরি করতে সক্ষম হওয়া উচিত এবং ও / আরএম ডাটাবেসে কোয়েরিটি অনুবাদ করে চালানো উচিত। অতিরিক্ত পয়েন্টগুলি যদি ক্যোরিটি স্ট্রিংয়ের পরিবর্তে দৃ strongly়ভাবে টাইপ করা চেইন হয়।

অন্যান্য বিষয় বিবেচনা করার জন্য রয়েছে তবে সেগুলি সবচেয়ে গুরুত্বপূর্ণ। আশাকরি এটা সাহায্য করবে.


6

এটি আপনি যা পরীক্ষা করতে চান তার উপর নির্ভর করে, আপনি যদি আপনার ব্যবসায়ের যুক্তি পরীক্ষা করতে চান তবে আপনার ডেটা অ্যাক্সেস করতে হবে / মক করতে হবে ( মার্টিন ফাউলার ) যাতে আপনার প্রথম পরামর্শটি দুর্দান্ত শুরু হয়। এই স্ট্যাকওভারফ্লো প্রশ্ন একটি দুর্দান্ত সি # উদাহরণ দেয় (আমি কিছু পিএইচপি নমুনা সন্ধান করার চেষ্টা করেছি তবে কোনও সন্ধান করতে পারি না)।

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

আপনি যদি আপনার ডাটাবেসে সঞ্চিত প্রক্রিয়া যুক্তি পরীক্ষা করতে চান তবে xUnit টেস্টপ্যাটার্নে দেখুন

আশাকরি এটা সাহায্য করবে


2

এটি অগত্যা একটি তাত্ক্ষণিক সহায়ক উত্তর নয়, তবে আপনি যদি ডাটাবেস টেস্টিবিলিটি সম্পর্কে সত্যিই উদ্বিগ্ন হন তবে আপনার এটি অবশ্যই রিল অন রুবেলে করা হয় into আমি যতদূর জানি, কেউই বিষয়টিকে আরও ভাল বা স্বজ্ঞাতভাবে আচ্ছাদন করেননি।


2
রেল অন রুবেল ডিফল্টরূপে সক্রিয় রেকর্ড প্যাটার্ন প্রয়োগ করে। : পাশাপাশি একটি লিঙ্ক প্রদান পারে en.wikipedia.org/wiki/Active_record_pattern
Spoike

0

আমি এই জাতীয় সমস্যার সিমফনি ফ্রেমওয়ার্ক সমাধানটি পরীক্ষা করে দেখেছি om সিমফনি এটির একটি পিএইচপি OO কাঠামোগত পরীক্ষার ফ্রেমওয়ার্ক।

এখানে একটি লিঙ্ক দেওয়া হয়েছে , তারা যা ভাবছে তার মতো কিছু ব্যবহার করেছে।

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