WP_UnitTestCase কারখানার ক্লাসগুলির জন্য ডকুমেন্টেশন কোথায় পাব?


21

সাম্প্রতিক সংস্করণগুলিতে WP_UnitTestCaseএকটি $factoryসম্পত্তি অন্তর্ভুক্ত করা হয়েছে ।

উদাহরণ স্বরূপ:

$post = $this->factory->post->create();

এই দরকারী বৈশিষ্ট্যটিতে আমি কোথায় ডকুমেন্টেশন পেতে পারি?

উত্তর:


26

আমি যতদূর জানি, বর্তমানে এটির জন্য কোনও দলিল নেই। সরকারী উৎস এখানে

আমি ইউনিট পরীক্ষার ওয়ার্ডপ্রেস প্লাগইনগুলির উপর একটি টিউটোরিয়ালও লিখেছি, যা এই বৈশিষ্ট্যটি সম্পর্কে কিছু বিশদ দেয়

ব্যবহারের অন্যতম সুবিধা WP_UnitTestCaseহ'ল এর কারখানাগুলি। এগুলি factoryসদস্য ভেরিয়েবলের মাধ্যমে অ্যাক্সেস করা যায় । factoryবৈশিষ্ট্য যে সংজ্ঞায়িত শ্রেণীর এক প্রতিটি একটি দৃষ্টান্ত সঙ্গে একটি বস্তুর অন্তর্ভুক্ত / factory.php । তারা কি করে, আপনি জিজ্ঞাসা করেন? আপনার পরীক্ষায় আপনার প্রয়োজন যেখানেই তারা ব্যবহারকারী, পোস্ট, পদ ইত্যাদি তৈরি করা খুব সহজ করে। সুতরাং, এটি করার পরিবর্তে:

$args = array( /* A bunch of user data you had to make up */ );
wp_insert_user( $args );

আপনি কেবল এটি করতে পারেন:

$user_id = $this->factory->user->create();

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

$user_ids = $this->factory->user->create_many( 25 );

এটি 25 জন ব্যবহারকারী তৈরি করবে যা আপনি আপনার পরীক্ষায় ব্যবহার করতে পারবেন।

factoryনিম্নলিখিত বৈশিষ্ট্য যে আপনি ব্যবহার করতে পারেন আছে:

  • $post
  • $attachment
  • $comment
  • $user
  • $term
  • $category
  • $tag
  • $blog

এগুলি সমস্ত $userকারখানার সাথে উপরোক্ত উদাহরণে প্রদর্শিত একই পদ্ধতিতে ব্যবহৃত হতে পারে । উদাহরণস্বরূপ, আপনি এই জাতীয় পোস্ট তৈরি করতে পারেন:

$this->factory->post->create();

আপনি অবজেক্ট তৈরির জন্য বিশেষ যুক্তিগুলি নির্দিষ্ট করতে পারেন। উপরের উদাহরণে আমরা একটি পোস্ট তৈরি করেছি, তবে এটি কোনও নির্দিষ্ট ব্যবহারকারীর কাছে বরাদ্দ করা হয়নি ( post_authorক্ষেত্রটি ডিফল্ট হবে 0)। কখনও কখনও আমরা পরিবর্তে কোনও ব্যবহারকারীর জন্য বরাদ্দ করা পোস্টটি পেতে পারি। আমরা এটির মতো করতাম:

$user_id = $this->factory->user->create();
$post_id = $this->factory->post->create( array( 'post_author' => $user_id ) );

এছাড়াও, আপনার তৈরি করা অবজেক্টের কেবল আইডি ছাড়াও যদি আপনার আরও প্রয়োজন হয় তবে আপনার এটি করার দরকার নেই:

$post_id = $this->factory->post->create();
$post = get_post( $post_id );

পরিবর্তে, create_and_get()পদ্ধতিটি ব্যবহার করুন :

// $post will be an instance of WP_Post 
$post = $this->factory->post->create_and_get();

এই উদাহরণে, আমরা postকারখানাটি ব্যবহার করেছি , তবে সমস্ত কারখানার ক্ষেত্রে এটি একই।

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

আপডেট (জুন 20, 2015): আপনি নিজের কাস্টম কারখানাও তৈরি করতে পারেন !

আপডেট (২ September সেপ্টেম্বর, ২০১)): ওয়ার্ডপ্রেস ৪.৪-এ পরীক্ষাগুলিfactory() কারখানায় অ্যাক্সেসের জন্য একটি স্ট্যাটিক পদ্ধতি সরবরাহ করার জন্য আপডেট করা হয়েছিল , যদিও factoryসম্পত্তিটি এখনও যাদুবিদ্যার মাধ্যমে সরবরাহ করা হয়।


ডোমেনটি মারা গেছে, এবং টিউটোরিয়ালটির লিঙ্কটিও। এটি সরানো হয়েছে?
জোশ হাবদাস

@ জোশ এই মুহূর্তে ফিরে আসবে বলে মনে হচ্ছে। মাঝরাতে সাইটটি একটি ব্যাকআপ চালিয়ে যাওয়ার সময় আপনি সম্ভবত এটি আঘাত করেছিলেন (আমার সময় অঞ্চল)।
জেডি

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

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

1
@ জোশ এই মন্তব্য সম্পর্কে প্রধানদের ধন্যবাদ জানানোর জন্য, এটি এখনই ঠিক করা উচিত। এটি অত্যধিক জ্বালানী বিরোধী-স্প্যাম প্লাগইনের কারণে হয়েছিল।
জেডি

2

উত্স কোড এ

https://github.com/rnagle/wordpress-unit-tests/blob/master/includes/factory.php

এই মুহূর্তটি দেখার জন্য সেরা জায়গা বলে মনে হচ্ছে


2
আপনার প্রশ্ন থেকে কেবল লিঙ্কটি সরিয়ে ফেলুন: আপনি এর চেয়ে আর কী পড়বেন? দয়া করে সর্বদা উত্তর লিখুন যা বাইরের উত্সগুলিতে নির্ভর করে না। অন্যথায় আপনার উত্তর মুছতে হবে।
কায়সার

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

2
হ্যাঁ, আমরা আশা করব যে কেউ এখানে সমস্ত প্রাসঙ্গিক কোড পোস্ট করবেন । এটি এমনকি এফএকিউ সাইটেরও লেখা আছে - "লক্ষ্য সাইটেরটি অ্যাক্সেসযোগ্য না হলে বা স্থায়ীভাবে অফলাইনে চলে যাওয়ার ক্ষেত্রে" গুরুত্বপূর্ণ লিঙ্কের সর্বাধিক প্রাসঙ্গিক অংশটি সর্বদা উদ্ধৃত করুন "" এটি লিঙ্কযুক্ত সংস্থানটির সম্পূর্ণ সামগ্রী নাও হতে পারে তবে এক্ষেত্রে এটি হতে পারে। যেমনটি, যখন সেই গিটহাব রিসোর্স অ্যাক্সেসযোগ্য হয়ে যায়, এই উত্তরটি অর্থহীন হয়ে যায়।
s_ha_dum
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.