2016-01-06 4 views
1

Я тестирую свой проект CodeIgniter с помощью PHPUnit Testing framework (CITest.php). Когда функция test_model(), вызывает модель напрямую, чтобы получить информацию о пользователе, она работает отлично. Но когда я делаю то же самое через контроллер, вызывая функцию test_controller(), он ничего не выводит (когда я отлаживаю, сама модель не вызвана). Я даже подтвердил правильность передачи данных сообщения, создав функцию test_post_data(). Я что-то упускаю?UnitTest PHP CodeIgniter Controller, который вызывает модель

Я мог найти только онлайн-ресурсы, чтобы проверить mdoel напрямую или контроллер отдельно. Но я не нашел никакой полезной ссылки, которая вызывает контроллер, который запускает модель.

CITest.php

class CITest extends PHPUnit_Framework_TestCase 
{ 
    private $CI; 
    public function setUp() 
    { 
    $this->CI = &get_instance(); 
    $this->CI->load->model('Test_model'); 
    $this->model = $this->CI->My_model; // load the model 
    $this->auth = new Test_controller; // load the controller 
    } 

    public test_model() { 
    $user_id = 6; 
    print_r($this->model->getUserData($user_id)); 
    } 

    public test_post_data() { 
    $_POST['useR_id'] = 22; 
    print_r($this->model->check_post_data()); 
    } 

    public test_controller() { 
    $_POST['useR_id'] = 22; 
    print_r($this->model->get_user_data()); 
    } 
} 

Test_controller.php

class Test_controller extends CI_Controller { 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('Test_model'); 
    } 

    public function check_post_data() { 
     return $this->input->post(); 
    } 

    public function get_user_data() { 
     $user_id = $this->input->post('user_id'); 
     return $this->Test_model->getUserData($user_id); 
    } 
} 

Test_model.php

class Test_model extends CI_Model { 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function getUserData($user_id) { 
     return $this->db->select("*") 
        ->from("users") 
        ->where("user_id", $user_id) 
        ->get()->result_array(); 
    } 
} 

ответ

0

Код в CITest.php

public test_controller() { $_POST['useR_id'] = 22; print_r($this->model->get_user_data()); }

должен быть как следующий?

public test_controller() { $_POST['useR_id'] = 22; print_r($this->auth->get_user_data()); }