Код CodeIgniter работает в браузере, умирает в тесте phpunit: вызов неопределенного метода CI_DB_mysql_driver :: where () в (… privacy ..) users.php в строке 36

0

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

Ошибка: вызов неопределенного метода CI_DB_mysql_driver :: where() in (... privacy..)/application/models/tank_auth/users.php в строке 36

users.php (функция, которая умирает)

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
* Users
*
* This model represents user authentication data. It operates the following tables:
* - user account data,
* - user profiles
*
* @package  Tank_auth
* @author   Ilya Konyukhov (http://konyukhov.com/soft/)
*/
class Users extends CI_Model
{
    private $table_name         = 'users';          // user accounts
    private $profile_table_name = 'user_profiles';  // user profiles

    function __construct()
    {
        parent::__construct();

        $ci =& get_instance();
        $this->table_name           = $ci->config->item('db_table_prefix', 'tank_auth').$this->table_name;
        $this->profile_table_name   = $ci->config->item('db_table_prefix', 'tank_auth').$this->profile_table_name;
    }

 /**
 * Get user record by Id
 *
 * @param   int
 * @param   bool
 * @return  object
 */
function get_user_by_id($user_id, $activated)
{
    $this->db->where('id', $user_id);
    $this->db->where('activated', $activated ? 1 : 0);

    $query = $this->db->get($this->table_name);
    if ($query->num_rows() == 1) return $query->row();
    return NULL;
}

Поиски Google не возвращают ничего полезного. Я проверил файл database.php и нашел

$active_records = TRUE;

без каких-либо других ссылок, которые могли бы переписать эту переменную. Это также ошибка, которая НЕ была обнаружена при тестировании любого другого кода другим членом нашей команды разработчиков, поэтому я не получаю никакой внутренней помощи в этом.

Я написал тонну тестов для этого веб-сайта и не сталкивался с этим раньше. Любые подсказки или подсказки в правильном направлении были бы оценены!

Теги:
codeigniter
phpunit

1 ответ

0
Лучший ответ

Наконец получил помощь от коллеги. мы изменили драйвер:

class MY_DB_driver extends \CI_DB_active_record

Мы установили его в \CI_DB_driver, который убивал переменную $ active_record.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню