exceptions_test.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 153 行

SVN-BASE
153
字号
<?php// $Id: exceptions_test.php 1618 2007-12-29 22:52:30Z lastcraft $require_once(dirname(__FILE__) . '/../autorun.php');require_once(dirname(__FILE__) . '/../exceptions.php');require_once(dirname(__FILE__) . '/../expectation.php');require_once(dirname(__FILE__) . '/../test_case.php');Mock::generate('SimpleTestCase');Mock::generate('SimpleExpectation');class MyTestException extends Exception {}class HigherTestException extends MyTestException {}class OtherTestException extends Exception {}class TestOfExceptionExpectation extends UnitTestCase {    function testExceptionClassAsStringWillMatchExceptionsRootedOnThatClass() {        $expectation = new ExceptionExpectation('MyTestException');        $this->assertTrue($expectation->test(new MyTestException()));        $this->assertTrue($expectation->test(new HigherTestException()));        $this->assertFalse($expectation->test(new OtherTestException()));    }    function testMatchesClassAndMessageWhenExceptionExpected() {        $expectation = new ExceptionExpectation(new MyTestException('Hello'));        $this->assertTrue($expectation->test(new MyTestException('Hello')));        $this->assertFalse($expectation->test(new HigherTestException('Hello')));        $this->assertFalse($expectation->test(new OtherTestException('Hello')));        $this->assertFalse($expectation->test(new MyTestException('Goodbye')));        $this->assertFalse($expectation->test(new MyTestException()));    }    function testMessagelessExceptionMatchesOnlyOnClass() {        $expectation = new ExceptionExpectation(new MyTestException());        $this->assertTrue($expectation->test(new MyTestException()));        $this->assertFalse($expectation->test(new HigherTestException()));    }}class TestOfExceptionTrap extends UnitTestCase {    function testNoExceptionsInQueueMeansNoTestMessages() {        $test = new MockSimpleTestCase();        $test->expectNever('assert');        $queue = new SimpleExceptionTrap();        $this->assertFalse($queue->isExpected($test, new Exception()));    }    function testMatchingExceptionGivesTrue() {        $expectation = new MockSimpleExpectation();        $expectation->setReturnValue('test', true);        $test = new MockSimpleTestCase();        $test->setReturnValue('assert', true);        $queue = new SimpleExceptionTrap();        $queue->expectException($expectation, 'message');        $this->assertTrue($queue->isExpected($test, new Exception()));    }    function testMatchingExceptionTriggersAssertion() {        $test = new MockSimpleTestCase();        $test->expectOnce('assert', array(                '*',                new ExceptionExpectation(new Exception()),                'message'));        $queue = new SimpleExceptionTrap();        $queue->expectException(new ExceptionExpectation(new Exception()), 'message');        $queue->isExpected($test, new Exception());    }}class TestOfCatchingExceptions extends UnitTestCase {    function testCanCatchAnyExpectedException() {        $this->expectException();        throw new Exception();    }    function testCanMatchExceptionByClass() {        $this->expectException('MyTestException');        throw new HigherTestException();    }    function testCanMatchExceptionExactly() {        $this->expectException(new Exception('Ouch'));        throw new Exception('Ouch');    }    function testLastListedExceptionIsTheOneThatCounts() {        $this->expectException('OtherTestException');        $this->expectException('MyTestException');        throw new HigherTestException();    }}class TestOfCallingTearDownAfterExceptions extends UnitTestCase {    private $debri = 0;        function tearDown() {        $this->debri--;    }    function testLeaveSomeDebri() {         $this->debri++;        $this->expectException();        throw new Exception(__FUNCTION__);    }	function testDebriWasRemovedOnce() {        $this->assertEqual($this->debri, 0);	}}class TestOfExceptionThrownInSetUpDoesNotRunTestBody extends UnitTestCase {	function setUp() {        $this->expectException();        throw new Exception();	}		function testShouldNotBeRun() {        $this->fail('This test body should not be run');	}	function testShouldNotBeRunEither() {        $this->fail('This test body should not be run either');	}}class TestOfExpectExceptionWithSetUp extends UnitTestCase {	function setUp() {        $this->expectException();	}		function testThisExceptionShouldBeCaught() {        throw new Exception();	}	function testJustThrowingMyTestException() {        throw new MyTestException();	}}class TestOfThrowingExceptionsInTearDown extends UnitTestCase {        function tearDown() {        throw new Exception();    }        function testDoesntFatal() {        $this->expectException();    }}?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?