assertInstanceOf('Psy\Exception\Exception', $e); $this->assertInstanceOf('Psy\Exception\ThrowUpException', $e); $this->assertEquals("Throwing Exception with message '{{message}}'", $e->getMessage()); $this->assertEquals('{{message}}', $e->getRawMessage()); $this->assertEquals(123, $e->getCode()); $this->assertSame($previous, $e->getPrevious()); } public function testFromThrowable() { $previous = new \Exception('{{message}}'); $e = ThrowUpException::fromThrowable($previous); $this->assertInstanceOf('Psy\Exception\ThrowUpException', $e); $this->assertSame($previous, $e->getPrevious()); } public function testFromThrowableWithError() { if (version_compare(PHP_VERSION, '7.0.0', '<')) { $this->markTestSkipped(); } $previous = new \Error('{{message}}'); $e = ThrowUpException::fromThrowable($previous); $this->assertInstanceOf('Psy\Exception\ThrowUpException', $e); $this->assertInstanceOf('Psy\Exception\ErrorException', $e->getPrevious()); $this->assertNotSame($previous, $e->getPrevious()); $this->assertSame($previous, $e->getPrevious()->getPrevious()); } /** * @expectedException \InvalidArgumentException * @expectedExceptionMessage throw-up can only throw Exceptions and Errors */ public function testFromThrowableThrowsError() { $notThrowable = new \StdClass(); ThrowUpException::fromThrowable($notThrowable); } }