Skip to content

Commit

Permalink
Merge pull request #1156 from ghostwriter/bugfix/mock-mixed-return-types
Browse files Browse the repository at this point in the history
Mock methods with `mixed` return type
  • Loading branch information
davedevelopment committed Jan 11, 2022
2 parents a38a944 + 14dc317 commit 0ca8e28
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 1 deletion.
2 changes: 1 addition & 1 deletion library/Mockery.php
Expand Up @@ -886,7 +886,7 @@ private static function getNewDemeterMock(
$parRefMethod = $parRef->getMethod($method);
$parRefMethodRetType = Reflector::getReturnType($parRefMethod, true);

if ($parRefMethodRetType !== null) {
if ($parRefMethodRetType !== null && $parRefMethodRetType !== 'mixed') {
$nameBuilder = new MockNameBuilder();
$nameBuilder->addPart('\\' . $newMockName);
$mock = self::namedMock($nameBuilder->build(), $parRefMethodRetType);
Expand Down
40 changes: 40 additions & 0 deletions tests/Mockery/MockingMethodsWithMixedReturnTypeTest.php
@@ -0,0 +1,40 @@
<?php
/**
* Mockery
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://github.com/padraic/mockery/master/LICENSE
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to padraic@php.net so we can send you a copy immediately.
*
* @category Mockery
* @package Mockery
* @subpackage UnitTests
* @copyright Copyright (c) 2010 Pádraic Brady (http://blog.astrumfutura.com)
* @license http://github.com/padraic/mockery/blob/master/LICENSE New BSD License
*/

namespace test\Mockery;

use Mockery\Adapter\Phpunit\MockeryTestCase;
use test\Mockery\Fixtures\MethodWithMixedReturnType;

class MockingMethodsWithMixedReturnTypeTest extends MockeryTestCase
{
public function testMockingMixedReturnType()
{
$mock = \Mockery::mock(MyInterface::class);
$mock->shouldReceive("foo->bar")->andReturn("bar");
$this->assertSame('bar', $mock->foo()->bar());
}
}

interface MyInterface
{
public function getFoo(): mixed;
}

0 comments on commit 0ca8e28

Please sign in to comment.