Я создал новую функциональность на очень большом веб-сайте. Функциональность работает безупречно в браузере, но тесты 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;
без каких-либо других ссылок, которые могли бы переписать эту переменную. Это также ошибка, которая НЕ была обнаружена при тестировании любого другого кода другим членом нашей команды разработчиков, поэтому я не получаю никакой внутренней помощи в этом.
Я написал тонну тестов для этого веб-сайта и не сталкивался с этим раньше. Любые подсказки или подсказки в правильном направлении были бы оценены!
Наконец получил помощь от коллеги. мы изменили драйвер:
class MY_DB_driver extends \CI_DB_active_record
Мы установили его в \CI_DB_driver, который убивал переменную $ active_record.