Rumah  >  Soal Jawab  >  teks badan

Isu menggunakan ejekan separa dalam Laravel 9.x

<p>Hai pembangun laravel, saya menemui masalah dengan ejekan separa, saya perlu menguji kaedah yang menggunakan kaedah dalaman, yang perlu diejek, saya cuba menggunakan beberapa kaedah untuk mengejek kaedah, seperti idea seterusnya: < ; /p> <pre class="brush:php;toolbar:false;">#1 $mockMyClass = Olok-olok::olok-olok( $myClassInstance )->makePartial(); #2 $mockMyClass = $this->partialMock(); #3 $mockMyClass = $this->createPartialMock(); // dan kemudian $mockMyClass->shouldReceive('internalMethod') ->andReturn($responseInternalMethod);</pre> <p>Dan jelas sekali menggunakan cara yang diterangkan dalam dokumentasi Laravel Mocking Objects</p> <pre class="brush:php;toolbar:false;">gunakan AppService; gunakan MockeryMockInterface; $mock = $this->partialMock(Perkhidmatan::kelas, fungsi (MockInterface $mock) { $mock->harusTerima('proses')->sekali(); });</pre> <p>Tiada idea ini berfungsi, $mockMyClass sentiasa melaksanakan kaedah sebenar, bukan kaedah olok-olok yang sepatutnya mengembalikan $responseInternalMethod. Adakah sesiapa yang mengalami masalah ini juga? Saya perlu mengesahkan sama ada ia adalah isu dengan Laravel, Mockito, atau secara luaran, dan bukan persekitaran tempatan, haha. Saya membaca awak! </p> <p>Butiran teknikal: Laravel 9.x PHP 8.1 Unit PHP 9.5 Ejekan 1.5</p>
P粉726234648P粉726234648385 hari yang lalu484

membalas semua(1)saya akan balas

  • P粉885035114

    P粉8850351142023-09-03 17:16:49

    Baiklah, saya dah jumpa penyelesaiannya, tapi macam mana pun, saya berminat nak tahu ada sesiapa pun ada masalah ni

    Penyelesaian saya untuk masalah ini ialah:

    public function testRealExternalMethod()
    {
        // Create a mock of the dependency that will be used by the class
        $mockDependency = $this->createMock(Dependency::class);
        
        // in this case we need to use a partial mock because we have an internal method
        $mockMyClass = Mockery::mock(
            MyClass::class,
            [$mockDependency, $parameter1]
        )
            ->makePartial();
    
        $responseInternalMethod = ['needed data'];
    
        $mockMyClass->shouldReceive('internalMethod')
            ->andReturn($responseInternalMethod);
    
        $result = $mockMyClass->realExternalMethod($parameter2, $parameter3);
    }
    Penyelesaian untuk kes ini adalah dengan terus membuat contoh olok-olok kelas saya dan lulus semua parameter yang diperlukan oleh pembina sebagai kebergantungan atau data. Kemudian teruskan gelung ujian menggunakan kelas olok-olok sebagai kelas sebenar.

    balas
    0
  • Batalbalas