<?php
namespace app\tests;
use PHPUnit\Framework\TestCase;
use GuzzleHttp\Client;
class UserTest extends TestCase
{
private $client;
public function setUp()
{
$this->client = new \GuzzleHttp\Client( [
'base_uri' => 'http://z.slim.com',
'http_errors' => false,
]);
}
public function testUser()
{
$response = $this->client->get('/user/vilay');
$this->assertEquals(200, $response->getStatusCode());
$body = $response->getBody();
$data = json_decode($body, true);
$this->assertArrayHasKey('code', $data);
$this->assertArrayHasKey('msg', $data);
$this->assertArrayHasKey('data', $data);
$this->assertEquals(0, $data['code']);
}
}
Après avoir écrit le code de test, exécutez-le
php vendor/bin/phpunit app/tests/UserTest.php
Le test n'a pas été exécuté et le script phpunit a été généré directement
dir=$(d=${0%[/\]*}; cd "$d"; cd "../phpunit/phpunit" && pwd)
# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
# Cygwin paths start with /cygdrive/ which will break windows PHP,
# so we need to translate the dir path to windows format. However
# we could be using cygwin PHP which does not require this, so we
# test if the path to PHP starts with /cygdrive/ rather than /usr/bin
if [[ $(which php) == /cygdrive/* ]]; then
dir=$(cygpath -m "$dir");
fi
fi
dir=$(echo $dir | sed 's/ /\ /g')
"${dir}/phpunit" "$@"
De plus, j'ai configuré le test unitaire dans la variable d'environnement système et exécuté le test
phpunit app/tests/UserTest.php
Besoin d'introduire autoload.php en tête du code
require_once 'vendor/autoload.php';
N'est-il pas possible de charger automatiquement
Résolu, j'ai trouvé la solution moi-même après avoir été invité par les réponses données par les deux amis précédents
La plupart des tutoriels trouvés en ligne sont exécutés à l'aide de commandes
Cela peut être dû à des raisons de version. La version précédente était un fichier de script php, alors que ma version est
"phpunit/phpunit": "^6.2"
,vendor/bin/phpunit
un fichier de script shell (je ne connais pas les détails car je n'ai pas utilisé 5.x).La bonne façon de l'utiliser est de donner au fichier de script l'autorisation d'exécutable
Exécuter des tests
La méthode de chargement automatique est implémentée. À l'aide du package de composants phpunit chargé par composer, il existe un phpunit.xml dans le répertoire racine du projet, où vous pouvez définir le chemin de chargement automatique
Vous pouvez écrire un fichier de test unitaire en dehors du framework et utiliser phpunit xxx.php pour le tester. De cette façon, vous saurez si phpunit est installé normalement et si la manière d'introduire autoload.php est incorrecte. Vérifiez-les un par un.