Programmation
15 articles
Comment exécuter des tests PHPUnit automatiquement avec Laravel et Homestead
Lors de mes développements précédents, j'avais l'habitude d'utiliser un script personnalisé avec grunt-contrib-watch qui relançait mes tests PHPUnit à chaque fois que j'enregistrais un fichier PHP. Cependant Laravel vient avec Laravel Mix.
C'est un outil utile, mais qui ne supporte pas (et ne supportera jamais) PHPUnit. J'ai donc dû chercher une autre solution et le sauveur est phpunit-watcher. Installez, exécutez et... codez. C'est tout ! Des fonctionnalités et personnalisations sont disponibles pour s'adapter à vos besoins.
J'ai exécuté ces commandes dans ma machine Homestead :
$ composer global require spatie/phpunit-watcher
$ phpunit-watcher watch
Première utilisation de Laravel Dusk? Voici quelques erreurs et gaffes et leur solution
Manipulant pour la première fois Laravel Dusk, il me fallait tout d'abord installer son paquet :
$ composer require --dev laravel/dusk
J'utilisais toujours Laravel 5.6 mais la version actuelle de dusk est en version 5, qui requiert Laravel 5.7+. J'ai été voir sur Packagist après une version antérieure. Dans mon cas, c'était :
$ composer require --dev laravel/dusk:4.0.5
Chouette, maintenant je peux commencer à rédiger de fantastiques tests ! Heu... Non, pas si vite !
PHP Fatal error: Class 'Tests\DuskTestCase' not found
Parce que j'ai RTFM trop vite et homis :
$ php artisan dusk:install
Dusk scaffolding installed successfully.
Chouette, maintenant je peux vraiment commencer à rédiger de fantastiques tests !
...
Facebook\WebDriver\Exception\SessionNotCreatedException: session not created: Chrome version must be between 70 and 73
(Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 4.4.0-101-generic x86_6
4)
Alors peut-être…
$ sudo apt-get update
$ sudo apt-get install chromium-browser
[…]
404 Not Found [IP: ...]
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/chromium-browser...
Dans ce cas, mettez d'abord Homestead à jour. Quittez la machine virtuelle, exécutez $ vagrant box update
et enfin installez chromium.
$ php artisan dusk
OUI ! Jamais été aussi content de voir de bons vieux échecs de tests PHPUnit !
Comment créer des liens symboliques via FTP
Révélation: on ne peut pas !
Afin de pouvoir utiliser le File Storage de Laravel, il me fallait créer un lien symbolique dans le dossier public, pointant vers un sous-dossier situé dans le dossier storage. Une opération simple et rapide lorsque vous bénéficiez d'un accès ssh vers votre serveur de production. Mais c'est une toute autre histoire quand vous n'avez qu'un accès FTP !
La solution était donc de laisser PHP se charger du travail pour moi, en utilisant la commode fonction symlink :
if (!file_exists('./storage')) {
symlink("../storage/app/public", "./storage");
}
Accédez à la base de données de votre application depuis Android Studio
Ouvrez le terminal (Alt + F12) ou :
Ensuite listez vos appareils avec la commande adb
. Celle-ci affiche les émulateurs en cours d'exécution ainsi que les appareils Android connectés à votre ordinateur :
$ adb devices
List of devices attached
emulator-5554 device
Utiliser le nom de l'appareil pour ouvrir une connexion :
$ adb -s emulator-5554 shell
generic_x86:/ $
Afin d'éviter une erreur Permission denied (permission refusée) en essayant d'accéder aux fichiers de votre application, utilisez la commande run-as
:
generic_x86:/ $ run-as com.votre.nom-de-package.exemple sqlite3 databases/nom-de-votre-base.db
Accédez aux fichiers de votre application depuis Android Studio
En apprenant à jouer avec les bases de données SQLite sur Android, j'ai voulu vérifier la présence du fichier .db
généré par mon code dans l'émulateur. Je ne parvenais pas à le trouver avec l'explorateur de fichier Files (Fichiers) installé par défaut, parce qu'il ne nous laisse pas voir les dossiers systèmes.
Heureusement, Android Studio v3+ vient avec le Device File Explorer (Explorateur de fichiers de l'appareil connecté ou émulé), qui nous permet de naviguer dans les fichiers systèmes et d'accéder au dossier data situé à la racine. Pour l'ouvrir, allez dans View > Tool Windows > Device File Explorer (Vue > Fenêtres outil > Explorateur de fichiers)1. Les données de mon application étaient stockées dans /data/data
.
1 Ma version étant en anglais, je ne connais pas les termes exacts utilisés dans la version française.
[EN] How to see the data stored in sqlite in android studio using genymotion as emulator