2016-06-22 2 views
0

Использую https://github.com/chriskacerguis/codeigniter-restserver/releases (v2.7.7) и https://github.com/kenjis/ci-phpunit-test (v0.12.1). Я пытаюсь изменить REST_Controllerтест прерывания теста ci-phpunit-теста

{ 
    call_user_func_array([$this, $controller_method], $arguments); 
} 
catch (CIPHPUnitTestExitException $ex) { 
    // This block is for ci-phpunit-test 
    throw $ex; 
} 
catch (Exception $ex) { 

Мой тест прост

class Example_test extends TestCase 
{ 
    public function test_When_get_users_Then_returns_all_user_data() 
    { 
     try 
     { 
      # var_dump('a'); // show on the terminal 
      $output = $this->request('GET', 'api/example/users'); 
      # var_dump('b'); // not show on the terminal 
     } 
     catch (CIPHPUnitTestExitException $e) 
     { 
      $output = ob_get_clean(); 
     } 

     $data = json_decode($output, true); 
     $this->assertCount(3, $data); 
     $this->assertResponseCode(200); 
    } 
} 

Я стараюсь, чтобы запустить этот тест, я получил запрос на выход терминала.

$ php phpunit controller/api/Example_test.php 

[{"id":1,"name":"John","email":"[email protected]","fact":"Loves coding:},{...},...] 

И я нашел эту проблему является libraries/Rest_Controller.php

public function response($data = NULL, $http_code = NULL, $continue = FALSE) 
{ 

     if ($continue === FALSE) 
     { 
      // Display the data and exit execution 
      $this->output->_display(); 
      exit; # -----> Interrupt test 
     } 
} 

В Linux запустить работа (PHP версия 5.6). В Windows не работает (версия PHP - 5,4).

И я пытаюсь создать простой контроллер для тестирования exit.

Exit_to_exception.php

<?php 
class Exit_to_exception extends CI_Controller 
{ 
    public function call_exit_in_controller_method() 
    { 
     $this->output 
      ->set_status_header(200) 
      ->set_content_type('application/json', 'utf-8') 
      ->set_output(json_encode(['foo' => 'bar'])) 
      ->_display(); 
     exit(); 
    } 
} 

Exit_to_exception_test.php

<?php 
/** 
* @group patcher 
*/ 
class Exit_to_exception_test extends TestCase 
{ 
    public function test_call_exit_in_controller_method() 
    { 
     try { 
      $output = $this->request(
       'GET', 'exit_to_exception/call_exit_in_controller_method' 
      ); 
     } catch (CIPHPUnitTestExitException $e) { 
      $output = ob_get_clean(); 
      $this->assertEquals('Exit_to_exception', $e->class); 
      $this->assertEquals('call_exit_in_controller_method', $e->method); 
      $this->assertNull($e->exit_status); 
     } 
     $this->assertContains('{"foo":"bar"}', $output); 
    } 
} 

И я бегу на моих окнах, это не работает.

$ php phpunit controller/Exit_to_exception_test.php 
{"foo":"bar"} 

ответ

Смежные вопросы