O PHP é ótimo em não dizer se você fez algo errado, e isso geralmente volta para mordê-lo. Isso é válido mesmo ao escrever testes de unidade apropriados, porque avisos e notificações são separados do mecanismo de exceção no PHP e, portanto, pelo menos o PHPUnit não os detectará.
Mas outra regra do PHP também se aplica aqui: geralmente há uma solução alternativa aleatória 🙂 Basta usar um gerenciador de erros personalizado como o seguinte, que lança exceções para avisos, avisos e outros erros “não excepcionais” no PHP:
public function setUp() {
set_error_handler(function($errno, $errstr, $errfile, $errline) {
throw new RuntimeException($errstr . " on line " . $errline . " in file " . $errfile);
});
}
public function tearDown() {
restore_error_handler();
}
E é isso, para PHPUnit:
Claro que sua estrutura de teste de unidade deve suportar setUp
e tearDown
métodos, e você pode precisar modificar o snippet para trabalhar com sua configuração.
Bom teste!