There are a number of mock object libraries out there (mockery, shmock, phpunit's mock syntax, etc). This just looks like another builder syntax for making mocks / stubs with some fanciness around class extension - what's the benefit?<p>Also, how often is it useful to define a class at test time that is initialized by production code (from the section I Still Have Serious Dependency Issues!). This seems like an unlikely use case.
Noticing it's licensed under AGPL. I guess that means all projects that happen to include this (or something depending on it) would then be required to post full source code on the webpage, even if the project is for a single install?
Since this library requires PHP 5.4, I'm not sure why it bothers with this syntax:<p><pre><code> Parody\Mime::create('Vendor\Class\Project')
-> onCall('method') -> expect('argument one') -> give('response one')
-> onCall('method') -> expect('argument two') -> give('response two')
-> resolve();
</code></pre>
When one could just use anonymous functions to give the same result with less API-as-code.<p><pre><code> Parody\Mime::create('Vendor\Class\Project')
-> onCall('method', function($param) {
if ($param == 'argument one') return 'response one';
if ($param == 'argument two') return 'response two';
) -> resolve();
</code></pre>
This is more flexible, less code for the framework, and easier to learn.