PHPECTECEC est un cadre de test PHP basé sur le concept de développement axé sur le comportement (BDD). Lorsque les développeurs utilisent PHPPECECEC pour écrire des tests, ils doivent d'abord décrire le comportement de la classe, puis vérifier si ces comportements sont correctement mis en œuvre par le biais de cas de test. Par rapport aux tests unitaires traditionnels, PHPECTECEC accorde plus d'attention au comportement du code et peut refléter la logique en cours d'exécution du code plus intuitivement, améliorant ainsi l'efficacité de développement et la qualité du code.
Avant d'installer PHPPECECEC, assurez-vous que votre environnement répond aux conditions suivantes:
La version PHP doit être supérieure à 7,0
Compositeur installé
L'installation de PHPTSpec via le compositeur est très facile, il suffit de faire:
<span class="fun">le compositeur nécessite phptSpec / phptSpec</span>
Une fois l'installation terminée, vous pouvez utiliser PHPECTECEC en exécutant Vendor / Bin / PhptpecTpectec .
Tout d'abord, vous devez créer un fichier de description de classe (SPEC):
// nom de fichier: MyStringSpec.php
use PhpSpec\ObjectBehavior;
<p>class MyStringSpec extends ObjectBehavior<br>
{<br>
function it_is_initializable()<br>
{<br>
$this->shouldHaveType(MyString::class);<br>
}<br>
}<br>
Dans l'exemple, en héritant de la classe ObjectBehavior , nous pouvons appeler la méthode de test fournie par PHPPECT pour vérifier le comportement du code. La méthode IT_IS_INITIALISABLE teste ici si la classe MyString peut être instanciée correctement.
Après l'exécution de la commande du fournisseur / bin / phptpc , si le test passe, le terminal affichera quelque chose comme le suivant:
MyString
? is initializable
1 specs
1 example
1 assertion
Cela indique que le cas de test a été exécuté avec succès et que le taux de couverture de test a atteint 100%.
La méthode utilisée pour vérifier que la classe fonctionne comme prévu. Par exemple:
function it_can_add_two_numbers()
{
$this->add(2, 3)->shouldReturn(5);
}
Cette méthode teste si ADD () peut ajouter correctement deux nombres et renvoyer le résultat.
Utilisé pour détecter si le comportement de la classe est conforme aux attentes. Par exemple:
function it_should_return_false_for_empty_string()
{
$this->isEmpty('')->shouldReturn(false);
}
Ce test garantit que la méthode iSempty () renvoie false lorsque les chaînes vides.
Utilisé pour tester si la méthode lance une exception dans un cas spécifique. Par exemple:
function it_should_throw_an_exception_when_index_out_of_bound()
{
$this->shouldThrow('OutOfBoundsException')->during('get', [10]);
}
Ce test vérifie si l'exception OutOfBoundSexception est lancée lorsque la méthode get () est transmise dans un index en dehors de la plage.
Matcher est utilisé pour affirmer si les résultats des tests sont conformes aux attentes. PHPSCEC a une variété de matchs intégrés, et les éléments suivants sont couramment utilisés.
Vérifier la méthode renvoie la valeur. Par exemple:
function it_can_add_two_numbers()
{
$this->add(2, 3)->shouldReturn(5);
}
Appelez la méthode Add () pour passer en 2 et 3, attendez-vous à retourner 5.
Détermine si la valeur de retour est égale à la valeur attendue. Par exemple:
function it_should_return_hello_world()
{
$this->return_hello_world()->shouldEqual('Hello World');
}
Vérifiez que la méthode return_hello_world () renvoie la chaîne "Hello World".
Détecter si la méthode lance l'exception spécifiée. Par exemple:
function it_should_throw_an_exception_when_index_out_of_bound()
{
$this->shouldThrow('OutOfBoundsException')->during('get', [10]);
}
Appelez la méthode get () et passez en 10, et une exception OutOfBoundSexception devrait être lancée.
PHPSCEC est un puissant cadre de test PHP qui aide les développeurs à écrire facilement des cas de test de haute qualité. Grâce à la méthode de développement axée sur le comportement, PHPPECT améliore non seulement la maintenabilité du code, mais optimise également le processus de développement axé sur le test. Il s'agit d'un outil puissant pour les développeurs de PHP pour améliorer la qualité du code.