Comment tester les exceptions avec PHPUnit?
Je ne suis pas la façon de test de l'unité des Exceptions avec PHPUnit.
Veuillez voir ma méthode, à l'Exception:
public function getPhone($html, $tag = 'OFF', $indicative, $number_lenght) {
//.. code
if ($tag <> 'OFF') {
$html = $doc[$tag]->text(); //Apanho apenas o texto dentro da TAG
if (empty($html)) {
throw new Exception("Nao foi possivel apanhar qualquer texto dentro da TAG, Metodo em causa: getPhone()");
}
}
//.. code
}
Et maintenant mon PHPUnit Test:
<?php
require_once '../Scrap.php';
class ScrapTest extends PHPUnit_Framework_TestCase
{
protected $scrap;
//Setup function to instantiate de object to $this->scrap
protected function setUp()
{
$this->scrap = new Scrap;
}
/**
* @covers Scrap::getPhone
* @expectedException Exception
*
*/
public function testGetPhone() {
//Variables1
$array_static1 = Array(0 => 218559372, 1 => 927555929, 2 => 213456789, 3 => 912345678);
$phone_list1 = '</div>A Front para<br /><br /><br /><br /><br /><br />-Apoio;<br />-Criação;<br />-Campanhas;<br />-Promoções<br /><br /><br />CONDIÇÕES:<br /><br />Local de Trabalho: Es<br />Folgas: Mistas<br /><br /><br /><br />ordem 500€<br /><br /><br /><br />Mínimos:<br /><br />- Conhecimentos;<br />- Ensino ;<br />-INGLÊS.<br /><br /><br /><br />Candidaturas: <br />[email protected]<br />218559372 | 927 555 929 | <br />RH<br />Rua C. Sal. 40<br />1000-000 Lisboa<br /><br /><br />+351 21 3456789 | (351) 912345678';
//Variables2
$array_static2 = Array(0 => 'NA');
$phone_list2 = "";
//.. more tests
//Test Exception, Tag not found
if (TRUE) {
//Bloco try/catch para confirmar que aqui lança excepção
try {
$this->scrap->getPhone($phone_list1, 'hr', '351', '9');
}
catch (Exception $expected) {
return;
}
$this->fail('An expected exception has not been raised.');
}
}
}
?>
Si je lance le test, j'ai eu la "Panne":
1) ScrapTest::testGetPhone
Expected exception Exception
FAILURES!
Tests: 1, Assertions: 5, Failures: 1.
L'exception soulève, mais je ne veux pas obtenir de l'échec dans la PHPUnit, Si l'Exception lever, je veux passer le test OK.
Pouvez-vous me donner quelques indices?
Cordialement,
source d'informationauteur André
Vous devez vous connecter pour publier un commentaire.
Vous d'en faire trop.
Éther utilisation: @expectedException Exception
OU: try /catch /$this->ne
La façon dont vous êtes en train de faire maintenant, dit "attraper exception et PUIS attendre le code de jeter un autre!"
La première méthode est plus propre à mon avis parce que c'est seulement 1 ligne contre 5 (ou même plus) de lignes de code, et il est moins sujette aux erreurs.
Cela devrait le faire.
Il y a deux façons de tester les exceptions lancées, mais il dépend de vos besoins. Si vous n'avez pas de soins sur le contenu ou les propriétés de l'exception (c'est à dire le code, message, etc), alors vous pouvez faire:
D'autre, si vous avez besoin d'utiliser des propriétés d'exception pour l'affirmation (c'est à dire le code), alors vous pouvez faire le try-catch-fail:
Avis de la
return
déclaration à l'intérieur de lacatch
bloc.Le
$this->fail();
déclaration de volonté doit être appelée une fois il n'y a pas d'exception est levée. Ainsi, ce test échoue parce qu'il doit tester l'exception qui n'est pas jeté dans la première place.