HowTo PHPUnit assertFunction HowTo PHPUnit assertFunction php php

HowTo PHPUnit assertFunction


When there's not an assertion method provided by PHPUnit I either create it or use one of the lower-level assertions with a verbose message:

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

assertTrue() is as basic as you can get. It allows a great deal of flexibility because you can use any built-in php function that returns a bool value for your test. Consequently, when the test fails the error/failure message isn't helpful at all. Something like Failed asserting that <FALSE> is TRUE. That's why it's important to pass the second param to assertTrue() detailing why the test failed.


Unit and Integration tests are for testing behaviors not for restating what the class definition is.

So PHPUnit doesn't provide such assertion.PHPUnit can either assert that a class has a name X , that a function returns value somthing , but you can do what you want using :

/** * 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));}