diff --git a/src/Alias.php b/src/Alias.php index 245edb472..8008d0129 100644 --- a/src/Alias.php +++ b/src/Alias.php @@ -256,6 +256,8 @@ protected function detectFake() if ($fake !== $real) { $this->addClass(get_class($fake)); } + } catch (Throwable $throwable) { + // Ignore error } finally { $facade::swap($real); } diff --git a/tests/AliasTest.php b/tests/AliasTest.php index e0aa43373..d11ddd89b 100644 --- a/tests/AliasTest.php +++ b/tests/AliasTest.php @@ -9,6 +9,7 @@ use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Query\Builder; use Illuminate\Support\Arr; +use Illuminate\Support\Facades\Facade; /** * @internal @@ -66,6 +67,22 @@ function () { $this->assertNotNull($this->getAliasMacro($alias, EloquentBuilder::class, $macro)); } + /** + * @covers ::detectFake + */ + public function testNoExceptionOnRequiredFakeParameters(): void + { + // Mock + $alias = new AliasMock(); + + // Prepare + $alias->setFacade(MockFacade::class); + $this->expectNotToPerformAssertions(); + + // Test + $alias->detectFake(); + } + /** * @covers ::detectTemplateNames */ @@ -118,4 +135,26 @@ public function detectMethods() { parent::detectMethods(); } + + public function detectFake() + { + parent::detectFake(); + } + + public function setFacade(string $facade) + { + $this->facade = $facade; + } +} + +class MockFacade extends Facade +{ + protected static function getFacadeAccessor() + { + return ''; + } + + public static function fake(string $test1, $test2 = null) + { + } }