လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> phpunit အတွက်ကွဲပြားခြားနားသော collbacks ၏နှိုင်းယှဉ်ကိုတူအောင်ဖန်တီးပါ

phpunit အတွက်ကွဲပြားခြားနားသော collbacks ၏နှိုင်းယှဉ်ကိုတူအောင်ဖန်တီးပါ

M66 2025-05-17

ယူနစ်စမ်းသပ်ခြင်းတွင်တစ်ခါတစ်ရံကျွန်ုပ်တို့သည်ကွဲပြားခြားနားသော callback လုပ်ဆောင်ချက်များ၏လုပ်ဆောင်မှုအောက်တွင်စုဆောင်းထားသောစစ်ဆင်ရေးများကိုစစ်ဆေးရန်လိုအပ်သည်။ Phpunit သည်အထူးသဖြင့်အရေးယူမှုများသို့မဟုတ်စုဆောင်းမှုများကိုမကြာခဏနှိုင်းယှဉ်ခြင်းနှင့်နှိုင်းယှဉ်ပါကအထူးသဖြင့်လုပ်ဆောင်ချက်များသို့မဟုတ် collections များနှင့်မကြာခဏအသုံးပြုသောအခါ, ဤဆောင်းပါးသည် Phpunit တွင်အဓိကအမည်နှိုင်းယှဉ်မှုအခြေအနေများအကောင်အထည်ဖော်ရန် Phpunit တွင် callback function များကိုမည်သို့တုပရန်ကိုပြသမည်ဖြစ်သည်။

1 ။ ပြ problem နာနောက်ခံ

သော့များသည်ကျပန်းနှင့်မမှန်သောအချက်အလက်များကိုကိုယ်စားပြုသည့်ဆိုပါစို့။ ဒီ arrays တွေကိုစီဖို့လိုတယ်, ဒါပေမယ့်အမိန့်စည်းမျဉ်းစည်းကမ်းတွေကသော့ရဲ့အရွယ်အစားကိုတိုက်ရိုက်မနှိုင်းယှဉ်ပါ,

ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည်သော့ချက်အမည်များကိုအက္ခရာစဉ်အတိုင်းဖြစ်စေ, သို့မဟုတ်သော့ချက်အမည်များဖြင့်စီရန်သို့မဟုတ်အချို့သောစီးပွားရေးစည်းမျဉ်းစည်းကမ်းများအပေါ် အခြေခံ. အစုလိုက်အပြုံလိုက်အမိန့်ကိုပင်ဆုံးဖြတ်လိုပေမည်။

2 ။ Phpunit ကိုသုံးပြီး callback function ကိုစမ်းသပ်ပါ

ဤလုပ်ဆောင်ချက်ကိုစမ်းသပ်ရန်ကျွန်ုပ်တို့သည် callback တွင်အမည်များကိုမျှော်လင့်ထားသည့်အဓိကအမည်များကိုနှိုင်းယှဉ်ခြင်းရှိမရှိ Phpunit တွင်အတည်ပြုရန် callback function ကို Simulate Simulate ကိုဖန်တီးနိုင်သည်။

ကျွန်ုပ်တို့တွင်အောက်ပါ PHP လုပ်ဆောင်ချက်ရှိသည်ဆိုပါစို့။

 function customSort(array $array, callable $callback): array {
    uksort($array, $callback);
    return $array;
}

ဤလုပ်ဆောင်ချက် သည် ခင်းကျင်းခြင်းနှင့် callback function ကိုပြုလုပ်သည်။ ထို့နောက်ကျွန်ုပ်တို့သည်ကွဲပြားခြားနားသော callback လုပ်ဆောင်ချက်များကိုတုပသော phpunit စမ်းသပ်မှုတစ်ခုကိုရေးပါမည်။

3 ။ Phpunit စမ်းသပ်မှုများကိုရေးပါ

Phpunit စမ်းသပ်မှုများတွင်ကျွန်ုပ်တို့သည် creatback function များကိုတုပရန် ဖန်တီးမှု () သို့မဟုတ် callback () နည်းလမ်းများကိုသုံးနိုင်သည်။ ကွဲပြားခြားနားသော callbacks ကိုမည်သို့တုပရန်နှင့် အကောက်ခွန် function ကိုစမ်းသပ်ရန်ဥပမာ၏ဥပမာတစ်ခုဖြစ်သည်။

 use PHPUnit\Framework\TestCase;

class CustomSortTest extends TestCase {

    public function testSortByLength() {
        $array = [
            'apple' => 'fruit',
            'banana' => 'fruit',
            'kiwi' => 'fruit',
            'grape' => 'fruit',
        ];

        // သော့အမည်အရှည်အရှည် sorting ကြောင်း callback function ကို
        $callback = function($a, $b) {
            return strlen($a) - strlen($b);
        };

        $sortedArray = customSort($array, $callback);

        $this->assertEquals(['kiwi' => 'fruit', 'apple' => 'fruit', 'grape' => 'fruit', 'banana' => 'fruit'], array_keys($sortedArray));
    }

    public function testSortAlphabetically() {
        $array = [
            'apple' => 'fruit',
            'banana' => 'fruit',
            'kiwi' => 'fruit',
            'grape' => 'fruit',
        ];

        // cypressback လုပ်ဆောင်ချက်များကိုအက္ခရာစဉ်အလိုက်စီလိုက်
        $callback = function($a, $b) {
            return strcmp($a, $b);
        };

        $sortedArray = customSort($array, $callback);

        $this->assertEquals(['apple' => 'fruit', 'banana' => 'fruit', 'grape' => 'fruit', 'kiwi' => 'fruit'], array_keys($sortedArray));
    }

    public function testSortByCustomLogic() {
        $array = [
            'apple' => 'fruit',
            'banana' => 'fruit',
            'kiwi' => 'fruit',
            'grape' => 'fruit',
        ];

        // ပြောင်းပြန်အက်ခရာအမိန့်တွင် sorted callback လုပ်ဆောင်ချက်များကို Simulate function ကို Simulate
        $callback = function($a, $b) {
            return strcmp($b, $a);
        };

        $sortedArray = customSort($array, $callback);

        $this->assertEquals(['kiwi' => 'fruit', 'grape' => 'fruit', 'banana' => 'fruit', 'apple' => 'fruit'], array_keys($sortedArray));
    }
}

ဤဥပမာတွင်ကျွန်ုပ်တို့သည်စမ်းသပ်မှုသုံးခုကိုရေးပါ, တစ်ခုချင်းစီသည်ခင်းကျင်းမှု၏အမျိုးအစားခွဲခြားမှုကိုစစ်ဆေးရန်မတူညီသော callback function ကိုတုပသည်။

  1. Testsortbylenger : သော့အမည်ရှိအမည်အရစီပါ။

  2. testsortalphabetically : အက္ခရာစဉ်အရ။

  3. TestsortbyCustomlogic : စိတ်ကြိုက်နှိုင်းယှဉ်သည့်ယုတ္တိဗေဒကိုသုံးပါ။

4 ။ Phpunit စမ်းသပ်မှုများကို run ပါ

ဤစစ်ဆေးမှုများကို Phpunit command line tool မှတဆင့်အသုံးပြုနိုင်သည်။

 php vendor/bin/phpunit tests/CustomSortTest.php

အရာအားလုံးကောင်းကောင်းသွားလျှင်စမ်းသပ်မှုအားလုံးသည်မတူညီသော callback လုပ်ဆောင်ချက်များကိုမှန်ကန်စွာနှိုင်းယှဉ်နိုင်ကြောင်းညွှန်ပြသည်။

5 ။ အကျဉ်းချုပ်

ဤဆောင်းပါးတွင် Phpunit တွင်အဓိကအမည်နှိုင်းယှဉ်မှုအတွက် Phpunit တွင် callback function များကိုမည်သို့တုပနိုင်ပုံကိုပြသသည်။ UKSARS () နှင့် ခေါ်ဆိုမှု ခေါ်ဆိုမှုဆိုင်ရာလုပ်ဆောင်မှုများကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့တွင်စည်းမျဉ်းများကိုမည်သို့ခွဲခြားထားပြီး Phpunit ကိုမည်သို့အသုံးပြုသည်ကိုထိန်းချုပ်ရန်နှင့် Phpunit ကို အသုံးပြု. ကျွန်ုပ်တို့၏ယုတ္တိဗေဒသည်မျှော်လင့်ထားသည့်အတိုင်းလုပ်ဆောင်ရန်အတွက် Phpunit ကိုအသုံးပြုသည်။

ပိုမိုရှုပ်ထွေးသောခင်းကျင်းမှုလုပ်ငန်းများနှင့် sorting များကိုအကောင်အထည်ဖော်ရန်အမှန်တကယ်လိုအပ်ချက်များနှင့်အညီကွဲပြားခြားနားသောနှိုင်းယှဉ်ခြင်းလုပ်ဆောင်ချက်များကိုအလွယ်တကူတုန့်ပြန်နိုင်သည်။