Isu menggunakan ejekan separa dalam Laravel 9.x
P粉726234648
P粉726234648 2023-09-02 23:28:57
0
1
473

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>

#1 $mockMyClass = Olok-olok::olok-olok( $myClassInstance )->makePartial(); #2 $mockMyClass = $this->partialMock(); #3 $mockMyClass = $this->createPartialMock(); // dan kemudian $mockMyClass->shouldReceive('internalMethod') ->andReturn($responseInternalMethod);

Dan jelas sekali menggunakan cara yang diterangkan dalam dokumentasi Laravel Mocking Objects

gunakan AppService; gunakan MockeryMockInterface; $mock = $this->partialMock(Perkhidmatan::kelas, fungsi (MockInterface $mock) { $mock->harusTerima('proses')->sekali(); });

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!

Butiran teknikal: Laravel 9.x PHP 8.1 Unit PHP 9.5 Ejekan 1.5

P粉726234648
P粉726234648

membalas semua (1)
P粉885035114

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.
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!