Appliquer la notion : tester une exception PHP
Question
Ajoutez une condition à la méthode carre()
de la classe Calculatrice
levant une exception de type InvalidArgumentException
si la valeur passée en argument ne correspond pas à un nombre entier.
Créez une nouvelle classe de test « ExceptionTest
» dont l'unique méthode testException()
doit permettre de tester l'exception que vous venez de rédiger dans la classe Calculatrice
.
Pour ce faire, favorisez l'utilisation de l'annotation vue dans cette partie.
Indice
Utilisez la méthode PHP is_int()
pour vérifier si la variable qui est passée en argument est de type entier. Si ça n'est pas le cas, levez l'exception.
Solution
La classe à tester
1
<?php
2
# src/Util/Calculatrice.php
3
namespace App\Util;
4
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
5
6
class Calculatrice {
7
public function carre($n) {
8
if(!is_int($n)) {
9
throw new InvalidArgumentException("La méthode 'carre()' accepte uniquement un entier en entrée.");
10
}
11
return $n * $n;
12
}
13
}
La classe de test
1
<?php
2
# tests/Util/ExceptionTest.php
3
namespace Tests\Util;
4
5
use PHPUnit\Framework\TestCase;
6
use App\Util\Calculatrice;
7
8
class ExceptionTest extends TestCase
9
{
10
/**
11
* @expectedException InvalidArgumentException
12
*/
13
public function testException()
14
{
15
$calculatrice = new Calculatrice();
16
$calculatrice->carre("test");
17
}
18
}