Я тестирую свой проект 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();
}
}