Created
February 8, 2016 15:44
-
-
Save dnaber-de/3c0c36603fee173b0fa5 to your computer and use it in GitHub Desktop.
Approach on Monkey::action expects different values on consecutive calls
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
Brain\Monkey::actions() | |
->expectFired( 'do_something' ) | |
->twice() | |
->withArgs( | |
[ | |
'first', | |
'second' | |
] | |
); | |
do_action( 'do_something', 'first' ); | |
do_action( 'do_something', 'second' ); | |
//Mockery\Exception\NoMatchingExpectationException: No matching handler found for Mockery_0__do_do_something::do_action_do_something("first"). Either the method was unexpected or its arguments matched no expected argument list for this method | |
It seems that this issue mockery/mockery#459 I opened an year ago, has been implemented. In next version of Mockery the manual version can become:
Brain\Monkey::actions()
->expectFired( 'do_something' )
->twice()
->withArgs(function($arg) {
static $i = -1;
$i++;
$expected = ['first', 'second'];
$this->asssertSame($expected[$i], $arg);
});
So you can use whenHappen
for what it is intentended to be used...
Thanks a lot, Giuseppe!
This is possible for normal objects, if it does not work, it is a Brain Monkey bug: an issue would be much appreciated.
I'll figure out and will create an issue if there's one.
Yes, currently went with something like
Brain\Monkey::actions()
->expectFired( 'do_something' )
->twice()
->with( Mockery::on( function( $arg ) {
// test $arg here
return TRUE;
} ) );
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@dnaber-de because that test you are testing
do_action( 'do_something', 'first', 'second' );
In fact
withArgs([$arg1, $arg2])
is equal towith($arg1, $arg2)
.Surely you can do:
But this does not test the order.
this should be possible as well:
This is possible for normal objects, if it does not work, it is a Brain Monkey bug: an issue would be much appreciated.
An alternative solution is the "manual" way: