Cómo PHPUnit assertFunction

Me preguntaba si puedo verificar si una ‘clase’ tiene una función. assertClassHasAttribute no funciona, es normal ya que una Función no es un Atributo.

Cuando PHPUnit no proporciona un método de afirmación, lo creo o uso una de las aserciones de nivel inferior con un mensaje detallado:

$this->assertTrue( method_exists($myClass, 'myFunction'), 'Class does not have method myFunction' ); 

assertTrue() es lo más básico que puedes obtener. Permite una gran flexibilidad porque puede usar cualquier función php incorporada que devuelva un valor bool para su prueba. En consecuencia, cuando falla la prueba, el mensaje de error / falla no es útil en absoluto. Algo así como Failed asserting that is TRUE . Es por eso que es importante pasar el segundo assertTrue() a assertTrue() detalla por qué falló la prueba.

Las pruebas de unidad e integración son para probar comportamientos y no para replantear cuál es la definición de clase.

Entonces PHPUnit no proporciona tal afirmación. PHPUnit puede afirmar que una clase tiene un nombre X, que una función devuelve algo de valor, pero puede hacer lo que quiera usando:

 /** * Assert that a class has a method * * @param string $class name of the class * @param string $method name of the searched method * @throws ReflectionException if $class don't exist * @throws PHPUnit_Framework_ExpectationFailedException if a method isn't found */ function assertMethodExist($class, $method) { $oReflectionClass = new ReflectionClass($class); assertThat("method exist", true, $oReflectionClass->hasMethod($method)); }