Nasıl PHPUnit DataBase ile mdb2 kullanarak çeşitli testler yapmak için?

1 Cevap php

Ben mdb2 kullanarak bazı sınıf test etmek PHPUnit DataBase kullanın.

Ben bir hata döndürür ikinci testi, karşılaşma bu yana tüm iyi olduğunu:

Caught exception: Object of class MDB2_Error could not be converted to string

When I place the second test in place of the first one, the new first test is OK, but the second one returns the same error! And the next ones also!

Belki MDB2 bağlantı ilk testten sonra kapatılır?

İşte benim yapıcısı:

public function __construct()
{
    $this->pdo = new PDO('connectionstring', 'user', 'passwd');
    try {
        $this->mdb2 = new MyDBA($this->dsn);
    }
    catch (Exception $e) {
        error_log(' __construct Caught exception: '.$e->getMessage());
    }
}

MyDBA returns a singleton. No exception is raised inside the constructor...

Burada ilk iki testler şunlardır:

public function testTranslationAdd()
{
    try {
        $id = $this->mdb2->addTranslation("This is the second english translation.","en");
    }
    catch (Exception $e) {
        error_log(' testTranslationAdd Caught exception: '.$e->getMessage());
    }

    $xml_dataset = $this->createFlatXMLDataSet(dirname(__FILE__).'/state/twotranslations.xml');
    $this->assertDataSetsEqual($xml_dataset,
                               $this->getConnection()->createDataSet(array("translation")));
}

public function testTranslationGet()
{
    try {
        $text = $this->mdb2->getTranslation(1,"en");
    }
    catch (Exception $e) {
        error_log(' testTranslationGet Caught exception: '.$e->getMessage());
    }

    $this->assertEquals("This is the first english translation.",$text);
}

1 Cevap

Gerçekten mdb2 sonucu hata olduğunu onaylamaları eklemek gerekir:

$this->assertFalse(MDB2::isError($this->mdb2), 'MDB2 error');

Eğer bir hata yoksa ne yazık ki size hatanın ne herhangi bir ipucu vermek ve doğrudan iddiasıyla getMessage() kullanarak değil kötü başarısız olur. Neden o yol boyunca bir şeyler yazmak gerektiğini:

if (MDB2::isError($this->mdb2)) {
    $this->fail('MDB2 error: ' . $this->mdb2->getMessage());
}