Isu menggunakan ejekan separa dalam Laravel 9.x
P粉726234648
2023-09-02 23:28:57
<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>
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:
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.