diff --git a/src/MockContainer.php b/src/MockContainer.php index 530ad71..9769c6f 100644 --- a/src/MockContainer.php +++ b/src/MockContainer.php @@ -6,17 +6,24 @@ class MockContainer extends Container { - private $mockedServices = array(); + private static $mockedServices = array(); public function overrideService($id, $mock) { - $this->mockedServices[$id] = $mock; + self::$mockedServices[$id] = $mock; + } + + public function removeMock($id) + { + if ($this->hasMockedService($id)) { + unset(self::$mockedServices[$id]); + } } public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE) { - if ($this->hasMockedService($id, $this->mockedServices)) { - return $this->mockedServices[$id]; + if ($this->hasMockedService($id)) { + return self::$mockedServices[$id]; } return parent::get($id, $invalidBehavior); @@ -24,6 +31,6 @@ public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE public function hasMockedService($id) { - return array_key_exists($id, $this->mockedServices); + return array_key_exists($id, self::$mockedServices); } } diff --git a/src/Mocker.php b/src/Mocker.php index b0198ce..210ab02 100644 --- a/src/Mocker.php +++ b/src/Mocker.php @@ -2,6 +2,7 @@ namespace Rezzza\MockExtension; +use Behat\Mink\Mink; use Symfony\Component\HttpKernel\KernelInterface; class Mocker @@ -12,7 +13,7 @@ class Mocker private $bypassingContainer; - public function __construct(KernelInterface $kernel, $mink) + public function __construct(KernelInterface $kernel, Mink $mink) { $this->container = $kernel->getContainer(); $this->mink = $mink; @@ -30,6 +31,11 @@ public function mockService($serviceId, MockEngine $adapter) return $mock; } + public function unmockService($serviceId) + { + $this->container->removeMock($serviceId); + } + public function getMockedService($serviceId) { return $this->container->get($serviceId);