public function testCircuitOpens() { $stub = $this->getMockBuilder('FakeCircuit')->setMethods(['foo'])->getMock(); $stub->method('foo')->will($this->throwException(new \Exception())); $cb = new SimpleCircuitBreaker($stub); for ($i = 0; $i < 10; $i++) { try { $cb->foo(); } catch (\Exception $e) { } } // successful method call should fail with Circuit Open $stub->method('foo')->willReturn('bar'); $this->expectException(CircuitBreakerOpenException::class); $cb->foo(); }