Categoria: PHPUnit
|
Publicado em 18 de Julho de 2013
|
Há duas formas de testar por exceções. Uma envolve o uso de anotações no docblock e a outra a chamada do método setExpectedException(). Anotação no docblock As anotações @expectedException, @expectedExceptionMessage e @expectedExceptionCode podem ser usadas, de forma que não ẽ obrigatório utilizar as três ao mesmo tempo: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class ClasseExcecaoTest extends PHPUnit_Framework_TestCase
{
/**
* @expectedException ArgumentoInvalidoException
* @expectedExceptionMessage Mensagem correta
*/
public function testExcecaoPossuiMensagemCorreta()
{
throw new ArgumentoInvalidoException('Qualquer mensagem', 10);
}
/**
* @expectedException ArgumentoInvalidoException
* @expectedExceptionCode 20
*/
public function testExcecaoPossuiCodigoCorreto()
{
throw new ArgumentoInvalidoException('Qualquer mensagem', 10);
}
}
?> |
Ambos os métodos irão gerar 'F', pois apesar da classe de exceção está correta, no primeiro a mensagem está errada e no segundo o código é quem está incorreto. Método setExpectedException Este método pode ser usado no lugar das anotações no docblock: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class ClasseExcecaoTest extends PHPUnit_Framework_TestCase {
public function testExcecao() {
$this->setExpectedException('ArgumentoInvalidoExcecao');
}
public function testExcecaoPossuiMensagemCorreta() {
$this->setExpectedException(
'ArgumentoInvalidoExcecao', 'Mensagem correta'
);
throw new ArgumentoInvalidoExcecao('Qualquer mensagem', 10);
}
public function testExcecaoPossuiCodigoCorreto() {
$this->setExpectedException(
'ArgumentoInvalidoExcecao', 'Mensagem correta', 20
);
throw new ArgumentoInvalidoExcecao('Mensagem correta', 10);
}
}
?> |
Os três métodos acima gerarão resultado 'F' de falha.
|