मैंने PHP और जेएस का उपयोग करके एक वेबपैप लिखा है जो अब काम कर रहा है, और फैसला किया है कि मुझे यूनिट परीक्षण के बारे में सीखना चाहिए और अब मेरे कोड को साफ करते समय इसे कार्यान्वित करना चाहिए।इस तरह के कार्यों को यूनिट टेस्ट चाहिए?
मैं उलझन में हूं कि यूनिट का परीक्षण किस प्रकार किया जाना चाहिए। प्रत्येक PHPUnit ट्यूटोरियल मैंने परीक्षण गेटर्स, सेटर्स, एरे में आइटम्स की गणना की है। जिस साइट पर मैं काम कर रहा हूं वह एक पृष्ठ है जो फ़ोटो प्रदर्शित करता है। कोई उपयोगकर्ता एक फोटो पसंद कर सकता है या उसे अपने पसंदीदा में जोड़ सकता है। पीएचपी मुख्य रूप से साइट पर बैकबोन.जेएस चलाने वाले क्लाइंटसाइड के लिए एपीआई परत के रूप में उपयोग किया जाता है।
मुझे इन कार्यों के लिए यूनिट परीक्षण कैसे लिखना चाहिए? एक फ़ंक्शन (नीचे दिखाया गया) AJAX के माध्यम से इसे भेजे गए $ _GET डेटा को पकड़ता है और डेटाबेस में कुछ पंक्तियां डालता है। इसमें कोई भी सेटर्स, गेटर्स, या कुछ भी मायने रखता नहीं है और यह कक्षा नहीं है। क्या इसमें यूनिट टेस्ट भी होना चाहिए?
इन कार्यों के लिए लिखने वाले यूनिट परीक्षण का एक उदाहरण वास्तव में कमाल होगा! :)
/**
* Create new Set and add item to it
* @return void
*/
public function action_create_set() {
// Get data from user
$user_id = Input::get('user_id');
$post_id = Input::get('post_id');
$set_name = Input::get('set_name');
// Create new set
$data = array(
'user_id' => $user_id,
'name' => $set_name
);
$set_id = DB::table('sets')->insert_get_id($data);
// Add item to newly created set
DB::query("INSERT IGNORE INTO posts_sets (post_id, set_id, user_id)
VALUES ($post_id, $set_id, $user_id)");
// Change `created_at` & `updated_at` col of 'sets'
$data = array(
'created_at' => DB::raw('NOW()'),
'updated_at' => DB::raw('NOW()')
);
DB::table('sets')
->where('id', '=', $set_id)
->update($data);
}
यह पहली समारोह के लिए, मेरे धारणा है कि एक परीक्षण है कि उन 3 वैरिएबल नहीं $user_id, $post_id, $set_name
डेटा शामिल होने की जांच करने के लिए लिखा जा सकता है। मुझे लगता है कि जांच करने के लिए एक परीक्षण होना चाहिए कि 2 insert
प्रश्न काम करते हैं, लेकिन मुझे यह भी लगता है कि पंक्तियों को सम्मिलित करने वाले फ़ंक्शंस PHP ढांचे द्वारा प्रदान किए जाते हैं और पहले ही पूरी तरह से परीक्षण किए जा चुके हैं ताकि आगे इकाई परीक्षण की आवश्यकता न हो।
एक और अनुमान है कि परीक्षण को फ़ंक्शन में 3 चर प्रदान करना चाहिए, फिर जांच करें कि नई पंक्तियों को 2 तालिकाओं में डाला गया है, लेकिन क्या इसे एकीकरण परीक्षण नहीं माना जाएगा?
यहां एक ऐसा फ़ंक्शन है जो उपयोगकर्ता से AJAX के माध्यम से इनपुट लेता है, फिर परिणाम जेएसओएन प्रारूप में देता है। क्या PHPUnit इस तरह के एपीआई कार्यों को संभाल लेना चाहिए? या क्लाइंटसाइड पर इकाई परीक्षण किया जाना चाहिए?
/**
* Get items Liked by user
* @return array
*/
public function action_likes() {
$user_id = Input::get('user_id');
$likes = DB::table('likes')
->join('posts', 'posts.id', '=', 'likes.post_id')
->where('likes.user_id', '=', $user_id)
->get();
return json_encode($likes);
}