| Server IP : 127.0.1.1 / Your IP : 216.73.216.152 Web Server : Apache/2.4.52 (Ubuntu) System : Linux bahcrestlinepropertiesllc 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:17 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/bahcrestline/core/vendor/phpunit/phpunit/tests/unit/Framework/MockObject/ |
Upload File : |
<?php declare(strict_types=1);
/*
* This file is part of PHPUnit.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace PHPUnit\Framework\MockObject;
use PHPUnit\Framework\ExpectationFailedException;
use PHPUnit\Framework\MockObject\Rule\InvocationOrder;
use PHPUnit\Framework\MockObject\Rule\MethodName;
use PHPUnit\Framework\MockObject\Rule\ParametersRule;
use PHPUnit\Framework\TestCase;
/**
* @covers \PHPUnit\Framework\MockObject\Matcher
*/
class MatcherTest extends TestCase
{
public function testParameterRuleIsAppliedToInvocation(): void
{
$invocationMatcher = $this->createStub(InvocationOrder::class);
$invocation = new Invocation('Foo', 'bar', [], 'void', new \stdClass);
$parameterRule = $this->createMock(ParametersRule::class);
$parameterRule->expects($this->once())
->method('apply')
->with($invocation);
$matcher = new Matcher($invocationMatcher);
$matcher->setMethodNameRule(new MethodName('bar'));
$matcher->setParametersRule($parameterRule);
$matcher->invoked($invocation);
}
public function testParametersRuleTriggersFailOfInvocation(): void
{
$invocationMatcher = $this->createStub(InvocationOrder::class);
$invocation = new Invocation('Foo', 'bar', [], 'void', new \stdClass);
$parameterRule = $this->createStub(ParametersRule::class);
$parameterRule->method('apply')
->willThrowException(new ExpectationFailedException('rule is always violated.'));
$matcher = new Matcher($invocationMatcher);
$matcher->setMethodNameRule(new MethodName('bar'));
$matcher->setParametersRule($parameterRule);
$this->expectException(ExpectationFailedException::class);
$this->expectExceptionMessage("Expectation failed for method name is \"bar\" when \nrule is always violated.");
$matcher->invoked($invocation);
}
public function testParameterRuleDoesNotInfluenceMatches(): void
{
$invocationMatcher = $this->createStub(InvocationOrder::class);
$invocationMatcher->method('matches')
->willReturn(true);
$invocation = new Invocation('Foo', 'bar', [], 'void', new \stdClass);
$matcher = new Matcher($invocationMatcher);
$matcher->setMethodNameRule(new MethodName('bar'));
$parameterRule = $this->createStub(ParametersRule::class);
$parameterRule->method('apply')
->willThrowException(new \Exception('This method should not have been called.'));
$matcher->setParametersRule($parameterRule);
$this->assertTrue($matcher->matches($invocation));
}
public function testStubIsNotInvokedIfParametersRuleIsViolated(): void
{
$invocationMatcher = $this->createStub(InvocationOrder::class);
$invocation = new Invocation('Foo', 'bar', [], 'void', new \stdClass);
$stub = $this->createMock(Stub\Stub::class);
$stub->expects($this->never())
->method('invoke');
$parameterRule = $this->createStub(ParametersRule::class);
$parameterRule->method('apply')
->willThrowException(new ExpectationFailedException('rule is always violated.'));
$matcher = new Matcher($invocationMatcher);
$matcher->setMethodNameRule(new MethodName('bar'));
$matcher->setParametersRule($parameterRule);
$matcher->setStub($stub);
try {
$matcher->invoked($invocation);
} catch (ExpectationFailedException $e) {
}
}
public function testStubIsInvokedIfAllMatchersAndRulesApply(): void
{
$invocationMatcher = $this->createStub(InvocationOrder::class);
$invocation = new Invocation('Foo', 'bar', [], 'void', new \stdClass);
$stub = $this->createMock(Stub\Stub::class);
$stub->expects($this->once())
->method('invoke')
->with($invocation);
$parameterRule = $this->createStub(ParametersRule::class);
$matcher = new Matcher($invocationMatcher);
$matcher->setMethodNameRule(new MethodName('bar'));
$matcher->setParametersRule($parameterRule);
$matcher->setStub($stub);
$matcher->invoked($invocation);
}
}