Ben testleri çalıştırırken çöp veri döndürme fetchrow nasıl Zend_Db_Table_Abstract durdurabilirim?

2 Cevap php

Ben Zend için oldukça yeni ve benim ünite testleri oluşturarak bazı zorluklar yaşıyorum. Ben hala ben yapıyorum o aptal şey olduğu umuduyla sorunu çoğaltır bir minimum test sınıfa aşağı elimden ettik:

class UserRegistrationsTest extends PHPUnit_Framework_TestCase 
{

$ db korumalı;

public function __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); }

public function testName() { $users = new Users(); $select = $users->select()->where('regCode = ?', 'deadbeef'); $row = $users->fetchRow($select); }

}

Yani bu basitleştirilmiş testidir. Ben içindeki verileri var (doğru bağlayan olduğu) kurmak bir db var. RegCode 'deadbeef' olarak ayarlı ve aynı zamanda e-posta, regDate ve ortaklık için alanları olan bir kayıt vardır:

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

Ben o alır gibi basit Users.php adında bir sınıf vardır:

class Users extends Zend_Db_Table_Abstract {

protected $_name = 'users';

}

Benim sorunum veritabanı ince içine ekleyebilirsiniz olduğunu, ancak herhangi bir sorgu tek bir sonuç. FetchRow Yukarıdaki doğru SQL üretir ama dönen satır çöp - o zaman bağlı olduğu RegCode, e-posta, hiç regDate sütun içeren bir satır döndürür ama collumn 'Kullanıcılar' yerine 'iştirak' denir.

Ben diğer tablolar ve hiçbiri çalışmaları üzerinde denedim - hatta bir sütun başlığının yanı sıra bir sütun olarak tablo adı olarak veritabanı adını döndürür.

Unutulmaması gereken bir şey ben bir test bu kaçmıyorum eğer çalışıyor olmasıdır. Uygun app aynı kod ve db büyük, ama bir phpunit Testi olarak çalışan çalışmak ve tüm kaçık :-( alır

Takdir herhangi bir tavsiye

Cheers, Bryn

2 Cevap

Bu artık sabit eski bir Zend hata oldu

Eğer bir RegCode alanı olan bir tablo ile başka bir tablo veya hatta başka bir veritabanı var mı? Eğer sorgu hala yürütür açıklıyor ki, yanlış adaptör kullanıyor olabilir. Test ortamı üretim ortamında (tablolar + alanlar) gibi aynı yapıya sahip en az olurdu önkoşul. Onlar farklı, bazı sorgular bazıları olmayabilir, iyi çalıştırmak olabilir.