Problèmes liés à l'utilisation de la moquerie partielle dans Laravel 9.x
P粉726234648
2023-09-02 23:28:57
<p>Hé développeurs de Laravel, j'ai trouvé un problème avec la moquerie partielle, je dois tester une méthode qui utilise une méthode interne, qui doit être moquée, j'ai essayé d'utiliser plusieurs méthodes pour se moquer de la méthode, comme l'idée suivante : < ; /p>
<pre class="brush:php;toolbar:false;">#1
$mockMyClass = Moquerie :: maquette (
$myClassInstance
)->makePartial();
#2
$mockMyClass = $this->partialMock();
#3
$mockMyClass = $this->createPartialMock();
// et puis
$mockMyClass->shouldReceive('internalMethod')
->andReturn($responseInternalMethod);</pre>
<p>Et évidemment en utilisant la manière décrite dans la documentation Laravel Mocking Objects</p>
<pre class="brush:php;toolbar:false;">utiliser AppService ;
utilisez MockeryMockInterface ;
$mock = $this->partialMock(Service::class, function (MockInterface $mock) {
$mock->shouldReceive('process')->once();
});</pré>
<p>Aucune de ces idées ne fonctionne, $mockMyClass exécute toujours la méthode réelle, pas la méthode fictive qui devrait renvoyer $responseInternalMethod. Quelqu'un a-t-il également ce problème ? Je dois confirmer si c'est un problème avec Laravel, Mockito ou en externe, et non avec l'environnement local, haha. Je t'ai lu ! </p>
<p>Détails techniques :
Laravel 9.x
PHP8.1
Unité PHP 9.5
Provocation 1.5</p>
D'accord, j'ai trouvé la solution, mais quoi qu'il en soit, je suis curieux de savoir si quelqu'un a aussi ce problème
Ma solution à ce problème est :
La solution dans ces cas est de créer directement une instance fictive de ma classe et de transmettre tous les paramètres requis par le constructeur en tant que dépendances ou données. Continuez ensuite la boucle de test en utilisant la classe fictive comme classe réelle.