Skip to main content

Messing with PHPUnit and Namespaces

This blog post might be outdated!
This blog post was published more than one year ago and might be outdated!
· One min read
Stephan Hochdörfer

Preparing the latest release of the Composer authstore plugin I ran into an issue with PHPUnit which at first glance was not easy to debug. However in the end it turned out to be my own fault ;)

I was trying to mock an existing class to be able to overwrite own method and still be able to call the original methods. So I tried this:

$this->authPlugin = $this->getMock('AuthStorePlugin', array('getProjectDir'));

I was able to the call getProjectDir() method but I was not able to call any other methods. After debugging quite a while and diving deep into the PHPUnit code I was able to identify the problem: I did not pass the full qualified classname to the getMock() method. Even though the test class resides in the same namespace as the AuthStorePlugin it seems that I have to pass the full qualified classname. So I had to change the call to this:

$this->authPlugin = $this->getMock('\bitExpert\Composer\Auth\AuthStorePlugin', array('getProjectDir'));

Now everything works like a charme ;)