| <?php | 
| /** | 
|  * PhpUnderControl_PhalApi_Test | 
|  * | 
|  * 针对 ../PhalApi.php PhalApi 类的PHPUnit单元测试 | 
|  * | 
|  * @author: dogstar 20150209 | 
|  */ | 
|   | 
| require_once dirname(__FILE__) . '/test_env.php'; | 
|   | 
| if (!class_exists('PhalApi')) { | 
|     require dirname(__FILE__) . '/../PhalApi.php'; | 
| } | 
|   | 
| class PhpUnderControl_PhalApi_Test extends PHPUnit_Framework_TestCase | 
| { | 
|     public $phalApi; | 
|   | 
|     protected function setUp() | 
|     { | 
|         parent::setUp(); | 
|   | 
|         $data = array( | 
|             'service' => 'AnotherImpl.doSth', | 
|         ); | 
|   | 
|         DI()->request = new PhalApi_Request($data); | 
|   | 
|         $this->phalApi = new PhalApi(); | 
|     } | 
|   | 
|     protected function tearDown() | 
|     { | 
|         DI()->response = 'PhalApi_Response_Json'; | 
|     } | 
|   | 
|     /** | 
|      * @group testResponse | 
|      */  | 
|     public function testResponseWithJsonMock() | 
|     { | 
|         DI()->response = 'PhalApi_Response_Json_Mock'; | 
|   | 
|         $rs = $this->phalApi->response(); | 
|   | 
|         $rs->output(); | 
|   | 
|         $this->expectOutputRegex('/"ret":200/'); | 
|     } | 
|   | 
|     /** | 
|      * @group testResponse | 
|      */  | 
|     public function testResponseWithJsonPMock() | 
|     { | 
|         DI()->response = new PhalApi_Response_JsonP_Mock('test'); | 
|   | 
|         $rs = $this->phalApi->response(); | 
|   | 
|         $rs->output(); | 
|   | 
|         $this->expectOutputRegex('/"ret":200/'); | 
|     } | 
|   | 
|     /** | 
|      * @group testResponse | 
|      */  | 
|     public function testResponseWithExplorer() | 
|     { | 
|         DI()->response = 'PhalApi_Response_Explorer'; | 
|   | 
|         $rs = $this->phalApi->response(); | 
|   | 
|         $rs->output(); | 
|         $res = $rs->getResult(); | 
|   | 
|         $this->assertEquals(200, $res['ret']); | 
|     } | 
|   | 
|     public function testResponseWithBadRequest() { | 
|         $data = array( | 
|             'service' => 'AnotherImpl', | 
|         ); | 
|   | 
|         DI()->request = new PhalApi_Request($data); | 
|         DI()->response = 'PhalApi_Response_Json_Mock'; | 
|   | 
|         $phalApi = new PhalApi(); | 
|   | 
|         $rs = $phalApi->response(); | 
|   | 
|         $rs->output(); | 
|   | 
|         $this->expectOutputRegex('/"ret":400/'); | 
|     } | 
|   | 
|     /** | 
|      * @expectedException Exception | 
|      * @expectedExceptionMessage trouble | 
|      */ | 
|     public function testResponseWithException() { | 
|         $data = array( | 
|             'service' => 'AnotherImpl.MakeSomeTrouble', | 
|         ); | 
|   | 
|         DI()->request = new PhalApi_Request($data); | 
|   | 
|         $rs = $this->phalApi->response(); | 
|     } | 
| } | 
|   | 
| class Api_AnotherImpl extends PhalApi_Api { | 
|   | 
|     public function doSth() { | 
|         return 'hello wolrd!'; | 
|     } | 
|   | 
|     public function makeSomeTrouble() { | 
|         throw new Exception('as u can see, i mean to make some trouble'); | 
|     } | 
| } |