From 7fe5a7ab85aabdcf77438aa672a765be962f8009 Mon Sep 17 00:00:00 2001 From: Jason McCreary Date: Thu, 22 Oct 2020 10:53:54 -0400 Subject: [PATCH] Add expects to built-in Facade testing methods --- src/Illuminate/Support/Facades/Facade.php | 16 ++++++++++++++++ tests/Support/SupportFacadeTest.php | 10 ++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/Illuminate/Support/Facades/Facade.php b/src/Illuminate/Support/Facades/Facade.php index 64c39b43340e..87e308042347 100755 --- a/src/Illuminate/Support/Facades/Facade.php +++ b/src/Illuminate/Support/Facades/Facade.php @@ -90,6 +90,22 @@ public static function shouldReceive() return $mock->shouldReceive(...func_get_args()); } + /** + * Initiate a mock expectation on the facade. + * + * @return \Mockery\Expectation + */ + public static function expects() + { + $name = static::getFacadeAccessor(); + + $mock = static::isMock() + ? static::$resolvedInstance[$name] + : static::createFreshMockInstance(); + + return $mock->expects(...func_get_args()); + } + /** * Create a fresh mock instance for the given class. * diff --git a/tests/Support/SupportFacadeTest.php b/tests/Support/SupportFacadeTest.php index 0daa265d5fb4..d960c1d6e1f8 100755 --- a/tests/Support/SupportFacadeTest.php +++ b/tests/Support/SupportFacadeTest.php @@ -70,6 +70,16 @@ public function testCanBeMockedWithoutUnderlyingInstance() FacadeStub::shouldReceive('foo')->once()->andReturn('bar'); $this->assertSame('bar', FacadeStub::foo()); } + + public function testExpectsReturnsAMockeryMockWithExpectationRequired() + { + $app = new ApplicationStub; + $app->setAttributes(['foo' => new stdClass]); + FacadeStub::setFacadeApplication($app); + + $this->assertInstanceOf(MockInterface::class, $mock = FacadeStub::expects('foo')->with('bar')->andReturn('baz')->getMock()); + $this->assertSame('baz', $app['foo']->foo('bar')); + } } class FacadeStub extends Facade