Laravel Facades et Mockery: faire de tests sur des méthodes enchaînées
🤔 Comment c’est arrivé?’
J’ai essayé de tester Laravel avec PHPUnit. Et j’ai besoin d’éxecuter les Facades de Laravel. Spécialement, les méthodes enchaînées.
Après ça, mes tests ont échoué car je n’ai peux pas exécuter put
sur null
. Cela signifiait que disk
retourne null
, complètement faux.
🔨 La solution
Après que j’en ai recherché. J’ai trouvé la solution dans la documentation de Mockery. Il est utilisé par Laravel pour faire des mocks. La prochaine ligne de code retournera null
par défaut et les assertions vont échouer.
Alors, la solution vient depuis une méthode simple de Mockery appelé andReturnSelf
. C’est dépend de l’implémentation de la classe, mais les plusieurs méthodes enchaînées retourneront la même classe où ils sont créés. De même, tu pourrais utiliser andReturn
et écrire l’objet, la chaîne ou la structure de donnes que les Mocks pourraient retourner.
Dans ce cas, j’ai besoin de andReturnSelf
. On verra comment le résultat final fonctionne. Pour le tester, mon ChainController
est enchaîneé à la route POST /chain
.
🔗 Des liens
Tu pourras voir d’exemple, click ici .