လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP ယူနစ်စမ်းသပ်ခြင်းလက်တွေ့လမ်းညွှန် - စမ်းသပ်မှုကိုတိုးတက်စေရန် Mock အရာဝတ်ထုများကိုမည်သို့အသုံးပြုရမည်နည်း

PHP ယူနစ်စမ်းသပ်ခြင်းလက်တွေ့လမ်းညွှန် - စမ်းသပ်မှုကိုတိုးတက်စေရန် Mock အရာဝတ်ထုများကိုမည်သို့အသုံးပြုရမည်နည်း

M66 2025-09-29

ယူနစ်စမ်းသပ်မှုများတွင် mock အရာဝတ်ထုများ၏ခြုံငုံသုံးသပ်ချက်

Mock Object သည်ယူနစ်စစ်ဆေးခြင်းတွင်အသုံးဝင်သောစမ်းသပ်မှုတစ်ခုအနေဖြင့်အတန်းစစ်ဆေးမှုတွင်စမ်းသပ်မှုတစ်ခုပြုလုပ်နေသည်။ Mock Object မှတစ်ဆင့် developer များသည်အမှန်တကယ်မှီခိုမှုများကိုအတင်းအဓမ္မမှီခိုခြင်းမရှိဘဲလုပ်ဆောင်ချက်များကိုသို့မဟုတ်နည်းလမ်းများကိုစမ်းသပ်နိုင်သည့်နည်းလမ်းများကိုစစ်ဆေးနိုင်သည်။

တစ် ဦး ကလှောင်ပြောင်အရာဝတ်ထုကိုဖန်တီးပါ

PHP တွင်သင်သည် GetMockbuilder Method ကို သုံး. Mock Object ကိုဖန်တီးရန်သင်အသုံးပြုနိုင်သည်။ ဤနည်းလမ်းသည်အောက်ပါ parameters များကိုလက်ခံသည်။

  • $ orderclassname: simulated ခံရမည့်အတန်းအစားသို့မဟုတ် interface ၏အမည်။
  • $ နည်းလမ်းများ (optional): ခြင်း simulation လိုအပ်သောနည်းလမ်းများ။
 // အာရုံဖော်ခြင်း MyInterface ထိသိျက်နှာ
$mock = $this->getMockBuilder(MyInterface::class)
             ->getMock();

// အာရုံဖော်ခြင်း MyClass 类并အာရုံဖော်ခြင်း其方法
$mock = $this->getMockBuilder(MyClass::class)
             ->setMethods(['myMethod'])
             ->getMock();

Mock အရာဝတ်ထုများကို configure

လှောင်ပြောင်သည့်အရာဝတ်ထုတစ်ခုကိုဖန်တီးပြီးသည့်နောက်တွင်သင်သည်၎င်း၏အပြုအမူကိုပြန်လည်ထည့်သွင်းခြင်းသို့မဟုတ်ချွင်းချက်ချခြင်းကဲ့သို့သောနည်းလမ်းနည်းလမ်းဖြင့် configure လုပ်နိုင်သည်။

 // ကွက်ကွက်ကေျာင်း Mock ပြန်လာရန်အရာဝတ်ထု 'foo'
$mock->method('getMyMethod')
     ->willReturn('foo');

// ကွက်ကွက်ကေျာင်း Mock ခြွင်းချက်ပစ်ရန်အရာဝတ်ထု
$mock->method('myOtherMethod')
     ->willThrowException(new RuntimeException());

လက်တွေ့ကိစ္စများ

ဒီနေရာမှာယူနစ်စမ်းသပ်မှုမှာ Mock အရာဝတ်ထုကိုဘယ်လိုသုံးရမယ်ဆိုတာဖေါ်ပြတဲ့ဥပမာတစ်ခုပါ။ MyService Class ပေါ် မူတည်. myclass အတန်းတစ်ခုရှိသည်ဆိုပါစို့။

 class MyClass
{
    private $myService;

    public function __construct(MyService $myService)
    {
        $this->myService = $myService;
    }

    public function doSomething(): string
    {
        return $this->myService->getData();
    }
}

MyService Class တွင် string ကို "foo" ကိုပြန်ပို့ပေးသော GetData နည်းလမ်းပါရှိသည်။ MyClass :: dosomething method method ကိုစမ်းသပ်ရန်သင်သည် Mock Object ကိုသုံးနိုင်သည်။

 class MyClassTest extends PHPUnit_Framework_TestCase
{
    public function testDoSomething()
    {
        // ဖန်တီး MyService Mock ကန့်ကွက်
        $mockService = $this->getMockBuilder(MyService::class)
                            ->setMethods(['getData'])
                            ->getMock();

        // ကွက်ကွက်ကေျာင်း Mock ကန့်ကွက်ပြန်လာ "bar"
        $mockService->method('getData')
                    ->willReturn('bar');

        // ဖန်တီး MyClass ဥပမာနှင့်ထိုးသွင်း Mock ကန့်ကွက်
        $myClass = new MyClass($mockService);

        // ကတရက် MyClass::doSomething ပြန်လာ "bar"
        $this->assertEquals('bar', $myClass->doSomething());
    }
}

ဤစမ်းသပ်မှုတွင်ကျွန်ုပ်တို့သည် Mock Order ကို Mock Onject ကိုဖန်တီးခဲ့ပြီး၎င်း၏ return value ကို "ဘား" သို့ထည့်သွင်းထားသည်။ ထို့နောက် Mock အရာဝတ်ထုကို MyClass ဥပမာတွင်ထိုးသွင်းပါ။ နောက်ဆုံးတွင် MyClass နှင့် MyService အကြားအပြန်အလှန်ဆက်သွယ်မှုသည်အခိုင်အမာပြောဆိုခြင်းမှတစ်ဆင့်မှန်ကန်ကြောင်းအတည်ပြုပါ။

Mock Objects များကိုအသုံးပြုခြင်းအားဖြင့် developer များသည်အမှန်တကယ် 0 န်ဆောင်မှုများသို့မဟုတ်ရှုပ်ထွေးသောပတ် 0 န်းကျင်များကိုမှီခိုခြင်းမရှိဘဲစည်းလုံးညီညွတ်မှုနှင့်စီးပွားရေးဆိုင်ရာယုတ္တိဗေဒကိုထိထိရောက်ရောက်စစ်ဆေးနိုင်သည်။

မကြာသေးမီ ဆောင်းပါးများ