/** * @test * @expectedException Exception * @expectedExceptionMessage fail */ public function it_disposes_if_observer_on_completed_throws() { $disposed = false; $disposable = new CallbackDisposable(function () use(&$disposed) { $disposed = true; }); $observer = new AutoDetachObserver(new CallbackObserver(null, null, function () { throw new Exception('fail'); })); $observer->setDisposable($disposable); $observer->onCompleted(); $this->assertTrue($disposed); }