代码之家  ›  专栏  ›  技术社区  ›  davbryn

运行测试时,如何停止Zend_Db_Table_Abstract fetchrow返回垃圾数据?

  •  0
  • davbryn  · 技术社区  · 15 年前

    我是Zend的新手,在创建单元测试时遇到了一些困难。我已经将它剥离为一个最小的测试类,仍然复制问题,希望这是我正在做的愚蠢的事情:

    class UserRegistrationsTest extends PHPUnit_Framework_TestCase 
    { 
    

    公共函数构造($name=NULL) { 父项::_构造($name);

    $this->db=Zend_db::factory('Pdo_Mysql',数组( “主机”=>'127.0.0.1', “用户名”=>'根', “密码”=>'xxxxxxxx', “dbname”=>'测试数据库' ));

    }

    公共函数testName() { $select=$users->选择()->其中('regCode=?','deadbeef'); }

    }
    

    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列,然后分支机构就在那里,但是collumn被称为“users”,而不是“affiliate”。

    我在其他表上也试过,但没有效果——有些表甚至将数据库名作为列标题返回,而表名作为列返回。

    有什么建议吗

    2 回复  |  直到 15 年前
        1
  •  0
  •   Percutio    15 年前

    您是否有任何其他表或甚至其他数据库的表中有regCode字段?您可能使用了错误的适配器,这可以解释为什么查询仍然执行。测试环境的先决条件至少是具有与生产环境完全相同的结构(表+字段)。如果它们不同,一些查询可能执行得很好,而另一些查询可能执行得不好。

        2
  •  0
  •   davbryn    14 年前

    这是一个古老的Zend bug,现已修复