php-mock/php-mock-phpunit

Exception Message is unclear

jmauerhan opened this issue · 3 comments

First of all I just want to say I really like the library, thank you so much for creating it :)

I do think this Exception Message should be improved.

When I create a mocked function like so:

$passthru = $this->getFunctionMock('My\Project', 'passthru');
$passthru->expects($this->exactly(2))->withConsecutive(['arg1'], ['arg2']);

The error message that I get when the test fails (because the code being tested doesn't actually call passthru() yet) is like this:

1) Tests\MyProjectTest::myTestMethod 
Expectation failed for method name is equal to <string:delegate> when invoked 2 time(s).       
Method was expected to be called 2 times, actually called 0 times.                                                                                                                        

Instead of <string:delegate> it would be helpful if it said passthru, or even better, something like: Expectation failed for passthru to be invoked 2 time(s)

I know the matchers and exceptions come from PHPUnit, but is there a way to send in better messages?

I noticed this already and started to fix that in the branch useful-message. Unfortunately the time I spent on that was not sufficient to completely understand the PHPUnit model.

I'm happy for any pull requests regarding this topic. It's a valid issue, so I'll leave this here open.

I'm glad I found this issue, because I could not for the life of me figure out what the message was trying to tell me.

I have no idea why I immediately closed the issue, but I'm glad even 4 years later it helped someone :D