Как я могу остановить Zend_Db_Table_Abstract fetchrow, возвращающую данные мусора при запуске тестов? - PullRequest
0 голосов
/ 29 октября 2009

Я довольно новичок в 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, и все становится чокнутым: - (

Любой совет приветствуется

Ура, Брин

Ответы [ 2 ]

0 голосов
/ 07 мая 2010

Это была старая ошибка Zend, которая теперь исправлена ​​

0 голосов
/ 29 октября 2009

Есть ли у вас какая-либо другая таблица или даже другая база данных с таблицей, имеющей поле regCode? Возможно, вы используете неправильный адаптер, это объясняет, почему ваш запрос все еще выполняется. Обязательным условием для вашей тестовой среды должна быть, по крайней мере, та же структура, что и в вашей производственной среде (таблицы + поля). Если они различаются, некоторые запросы могут выполняться хорошо, другие - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...