Como posso parar Zend_Db_Table_Abstract fetchrow retornar dados de lixo ao executar testes?

StackOverflow https://stackoverflow.com/questions/1643380

  •  10-07-2019
  •  | 
  •  

Pergunta

Eu sou bastante novo para o Zend e estou tendo algumas dificuldades com a criação de meus testes de unidade. Eu despojado-lo para baixo a uma classe de teste mínimo que ainda replica o problema, na esperança de que isso é algo idiota que eu estou fazendo:

class UserRegistrationsTest extends PHPUnit_Framework_TestCase 
{ 

$ protegidos db;

função pública __construct ($ name = NULL) { parent :: __ construct ($ name);

$ this-> db = Zend_Db :: factory ( 'pdo_mysql', array ( 'Host' => '127.0.0.1', 'Username' => 'root', 'Password' => 'xxxxxxxx', 'Dbname' => 'testingdb' ));

Zend_Db_Table_Abstract :: setDefaultAdapter ($ this-> db); }

função pública TestName () { $ users = novos usuários (); $ Selecionar = $ usuários-> selecione () -> where ( 'RegCode =?', 'DeaDBeeF'); $ Row = $ usuários-> fetchRow ($ selecionar); }

}

Portanto, este é o teste simplificado. I têm um db definido acima (que é a liga correctamente) que tem dados no seu interior. Há um registro com RegCode conjunto para 'DeaDBeeF' e também tem campos para e-mail, regDate e da filial:

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))   

Eu tenho uma classe chamada users.php que é tão simples quanto ele ganha:

class Users extends Zend_Db_Table_Abstract {

protected $_name = 'users';

}

O meu problema é que eu posso inserir no banco de dados muito bem, mas qualquer dúvida retornar resultados ímpares. O fetchRow acima gera o SQL correto, mas a linha retornada é lixo - ele retorna uma linha que contém RegCode, email, nenhuma coluna regDate em tudo, então o afiliado está lá, mas o collumn é chamado 'users' em vez de 'filial'

Eu tentei em outras mesas e nenhum trabalho -. Alguns até mesmo retornar o nome do banco de dados como um cabeçalho de coluna, bem como o nome da tabela como uma coluna

Uma coisa a notar é que, se eu não estou correndo este em um teste funciona bem. O exato mesmo código e db na grande adequada de trabalho aplicativo, mas funcionando como um teste PHPUnit e fica tudo screwy: - (

Algum conselho apreciado

Cheers, Bryn

Foi útil?

Solução 2

Este era um velho bug Zend que é fixo agora

Outras dicas

Você tem qualquer outra tabela ou até mesmo outro banco de dados com uma tabela que tem um campo RegCode? Você poderia estar usando o adaptador errado, isso explicaria por que sua consulta ainda executa. Pré-requisito para o seu ambiente de teste seria, pelo menos, ter a mesma estrutura exata como seu ambiente de produção (tabelas + campos). Se eles diferem, algumas consultas podem executar bem, alguns outros podem não.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top