Laravel 9.x での部分モックの使用に関する問題
<p>laravel 開発者の皆さん、部分的なモックに問題が見つかりました。内部メソッドを使用するメソッドをテストする必要があり、これをモックする必要があります。次のアイデアのように、メソッドをモックするためにいくつかのメソッドを使用してみました。 /p>
<pre class="brush:php;toolbar:false;">#1
$mockMyClass = Mockery::mock(
$myClassInstance
)->makePartial();
#2
$mockMyClass = $this->partialMock();
#3
$mockMyClass = $this->createPartialMock();
// その後
$mockMyClass-> shouldReceive('internalMethod')
->andReturn($responseInternalMethod);</pre>
<p>そして明らかに、ドキュメント「Laravel オブジェクトのモック化」で説明されている方法を使用しています</p>
<pre class="brush:php;toolbar:false;">App\Service を使用します。
Mockery\MockInterface を使用します。
$mock = $this->partialMock(Service::class, function (MockInterface $mock) {
$mock-> shouldReceive('process')->once();
});</pre>
<p>これらのアイデアはどれも機能しません。$mockMyClass は、$responseInternalMethod を返すモック メソッドではなく、常に実際のメソッドを実行します。誰かもこの問題を抱えていますか?それがローカル環境ではなく、Laravel、Mockito、または外部の問題なのかを確認する必要があります(笑)。読みましたよ! </p>
<p>技術的な詳細:
Laravel 9.x
PHP8.1
PHP ユニット 9.5
挑発 1.5</p>