Я довольно новичок в Zend и испытываю некоторые трудности с созданием своих юнит-тестов. Я сократил его до минимального тестового класса, который все еще повторяет проблему в надежде, что это что-то глупое, что я делаю:
class UserRegistrationsTest extends PHPUnit_Framework_TestCase
{
защищенный $ db;
публичная функция __construct ($ name = NULL)
{
parent :: __ construct ($ name);
$ this-> db = Zend_Db :: factory ('Pdo_Mysql', массив (
'host' => '127.0.0.1',
'username' => 'root',
'password' => 'xxxxxxxx',
'dbname' => 'testingdb'
));
Zend_Db_Table_Abstract :: setDefaultAdapter ($ this-> дБ);
} * +1010 *
публичная функция testName ()
{
$ users = new Users ();
$ select = $ users-> select () -> where ('regCode =?', 'deadbeef');
$ row = $ users-> fetchRow ($ select);
}
}
Так что это упрощенный тест. У меня есть настроенная БД (которая подключается правильно), которая имеет данные внутри него. Существует запись с regCode, установленным на «deadbeef», а также поля для электронной почты, regDate и affiliate:
CREATE TABLE testingdb.users (
regCode varchar(16) NOT NULL,
email varchar(150) NOT NULL,
regDate datetime NOT NULL,
affiliate int(10) unsigned DEFAULT NULL,
PRIMARY KEY (regCode))
У меня есть класс Users.php, который настолько прост, насколько это возможно:
class Users extends Zend_Db_Table_Abstract {
protected $_name = 'users';
}
Моя проблема в том, что я могу вставить в базу данных нормально, но любые запросы возвращают странные результаты. Приведенный выше fetchRow генерирует правильный SQL, но возвращаемая строка является мусором - она возвращает строку, содержащую regCode, email, вообще не содержит столбец regDate, тогда аффилированный элемент присутствует, но столбец называется «users» вместо «affiliate».
Я пробовал это на других таблицах, но ни одна из них не работает - некоторые даже возвращают имя базы данных в качестве заголовка столбца и имя таблицы в виде столбца.
Стоит отметить, что если я не запускаю это в тесте, он работает нормально. Точно такой же код и БД в соответствующем приложении работают великолепно, но работают как тест phpUnit, и все становится чокнутым: - (
Любой совет приветствуется
Ура,
Брин