Cet article vous apporte des connaissances pertinentes sur laravel L'équipe Laravel a publié la version 9.5, qui inclut la falsification de file d'attente partielle, la fonction auxiliaire freezeTime(), l'assertion storage assertDirectoryEmpty(), etc.
【Recommandation associée : vidéo laravel】
L'équipe Laravel a publié la version 9.5, qui inclut la falsification de file d'attente partielle, la fonction d'assistance freezeTime (), l'assertion de stockage assertDirectoryEmpty (), la fermeture dans assertJsonPath (), etc. :
@Lito a contribué au support du rappel sur Collect::implode() pour simplifier les appels ->map()->implode() :
// 之前<br/>{{ $user->cities->map(fn ($city) => $city->name.' ('.$city->state->name.')')->implode(', ') }}<br/>// 使用回调 <br/>{{ $user->cities->implode(fn ($city) => $city->name.' ('.$city->state->name.')', ', ') }}<br/>
Marquer Beech a contribué à la possibilité d'affirmer un répertoire vide à l'aide d'une instance Storage::fake() :
// 9.5 版本之前<br/>$this->assertEmpty(Storage::disk('temp')->allFiles('/foo'));<br/>// +9.5<br/>Storage::disk('temp')->assertDirectoryEmpty('/foo');<br/>
S'il n'y a aucun fichier dans le répertoire, seulement d'autres sous-répertoires, l'assertion échouera car elle contient d'autres dossiers/fichiers. Voici un exemple tiré de la discussion sur la pull request :
Storage::fake('temp');<br/>Storage::disk('temp')->put('/foo/bar.txt', 'string');<br/>Storage::disk('temp')->assertDirectoryEmpty('/'); // 失败<br/>
Fabien Villepinte a contribué à la possibilité de transmettre des fermetures à assertJsonPath sans aucune rupture rétrocompatible :
$response = TestResponse::fromBaseResponse(new Response([<br/> 'data' => ['foo' => 'bar'],<br/>]));<br/>$response->assertJsonPath('data.foo', 'bar');<br/>$response->assertJsonPath('data.foo', fn ($value) => $value === 'bar');<br/>
Bien que l'exemple ci-dessus semble plus simple en utilisant la version chaîne, si vous avez besoin d'une logique plus complexe autour des assertions de chemin, vous pouvez désormais utiliser des fermetures.
Taylor Otwell a contribué à la simulation partielle pour la file d'attente testée :
Queue::fake([JobsToFake::class, /* ... */]);<br/>
Hafez Divandari a contribué sans avoir besoin de remplacer l'intégralité de la méthode hasOneThrough ou hasManyThrough pour en créer un nouveau Capacités du modèle « through » :
// Define a `newThroughInstance` method<br/>protected function newThroughInstance($resource)<br/>{<br/> return (new \App\Models\ExampleEntity)->setTable($resource);<br/>}<br/>
Markus Hebenstreit a contribué à la fonction d'assistance à la chaîne wrap(). Voici un exemple d'utilisation tiré de la description de la demande d'extraction :
Str:wrap('value')->wrap('"');<br/>Str::of('value')->wrap('"');<br/>str('value')->wrap('"');<br/>// 输出: "value"<br/>Str:wrap('is', 'This ', ' me!');<br/>Str::of('is')->wrap('This ', ' me!');<br/>str('is')->wrap('This ', ' me!');<br/>// 输出: This is me!<br/>
@Italo a contribué à la fonction d'assistance freezeTime() - une méthode de test qui figera l'heure actuelle dans le test :
public function test_something()<br/>{<br/> $this->freezeTime();<br/> // 或将时间设置为日期的当前秒<br/> // 没有亚秒级精度。<br/> $this->freezeSecond();<br/>}<br/>
Le freezeTime( ) est un sucre syntaxique pour :
$this->travelTo(Carbon::now());<br/>
Dries Vints aide à accepter des objets appelables dans la méthode Http::beforeSending() au lieu de seulement des classes appelables uniquement. Désormais, l'exemple suivant fonctionnera au lieu d'obtenir « appeler la fonction membre __invoke() sur un tableau » :
Http::baseUrl('https://api.example.org')<br/> ->beforeSending([ $this, 'prepareRequest' ])<br/> ->asJson()<br/> ->withoutVerifying();<br/>
Vous pouvez consulter la liste complète des nouvelles fonctionnalités et mises à jour ci-dessous et consulter la version 9.4.0 sur GitHub Différences entre 9.5.0 et 9.5.0. Les notes de version suivantes sont tirées directement du journal des modifications :
Version 9.5.0
Nouveau
ajoute la prise en charge du rappel pour la méthode de collecte d'implosion. (#41405)
Ajout d'Illuminate/Filesystem/FilesystemAdapter::assertDirectoryEmpty(). (#41398)
Implémentez les "métadonnées" de courrier électronique pour SesTransport. (#41422)
Faites en sorte que assertPath () accepte une fermeture. (#41409)
Ajout du support appelable pour OperatorForWhere sur les collections. (#41414, #41424)
Ajout d'une falsification de file d'attente partielle. (#41425)
Ajout de l'option –name à la commande planning:test. (#41439)
définit Illuminate/Database/Eloquent/Concerns/HasRelationships::newRelatedThroughInstance(). (#41444)
Ajout d'Illuminate/Support/Stringable::wrap() (#41455)
Ajout de la fonction d'assistance « freezeTime » pour les tests. (#41460)
Autorise l'utilisation des appels beforeSending dans Illuminate/Http/Client/PendingRequest.php::runBeforeSendingCallbacks(). (#41489)
FIX
Correction d'un avertissement de dépréciation de route:list lors du filtrage sur le nom ou le domaine. (#41421)
Correction de la réponse HTTP::pool lorsque l'URL renvoie un code d'état vide. (#41412)
Résolution du nom du rappel fixe dans Illuminate/Session/Middleware/AuthenticateSession.php. (#41429)
Fixe de l'instance de garde utilisée dans /Illuminate/Session/Middleware/AuthenticateSession.php (#41447)
Fixe route:list –sauf-vendor, en utilisant Modifié dans la route cachée ::view () & Route::redirect () (#41465)
Ajoutez un type vide pour les propriétés de connexion dans IlluminateDatabaseEloquentFactoriesFactory . (#41418)
Noms réservés mis à jour dans GeneratorCommand (#41441)
Planification artisanale php repensée : commande list. (#41445)
Propriétés proxy d'ordre élevé éloquentes étendues. (#41449)
Autoriser la transmission de paramètres nommés à des étendues locales dynamiques. (#41478)
Exception levée si la balise réussit mais n'est pas prise en charge dans Illuminate/Encryption/Encrypter.php . (#41479)
La mise à jour PackageManifest::$vendorPath est initialisée pour le cas où le dossier du fournisseur du compositeur n'est pas dans le dossier du projet. (#41463)
【Recommandation associée : tutoriel vidéo laravel】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!