Herkes, DBUnit katmanını PHPUNit testlerime eklemeyle nasıl başlayacağınız hakkında iyi, çalışan bir eğitici veya kitap ile ilgili bir bağlantıya sahip midir?PHPUnit ve DBUnit - başlangıç
Ben Mysqldump komutu kullanılarak
protected function getDatabaseTester()
{
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$connection = new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($pdo);
$tester = new PHPUnit_Extensions_Database_DefaultTester($connection);
$tester->setSetUpOperation(PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT());
$tester->setTearDownOperation(PHPUnit_Extensions_Database_Operation_Factory::NONE());
/*
* the next line fails with the error
PHP Fatal error: __autoload(): Failed opening required 'PHPUnit_Extensions_Database_DataSet_FlatXMLDataSet.php' (include_path= ***
*/
$tester->setDataSet(new PHPUnit_Extensions_Database_DataSet_FlatXMLDataSet(dirname(__FILE__).'/../../../files/xml_database_export.xml'));
return $tester;
}
XML oluşturulur kod aşağıdaki denedim. Mutlu bir şekilde CSV'yi kullanabilir, hatta bellekte bir dizi bile (ne işe yarıyorsa)
Bu sisteme henüz başlamak üzereyim.
bir PHPUnit kılavuzunda Veritabanı testine bölüm vardır
DbUnit'i öğrenmek için iyi bir zaman geçtikten sonra, birisinin bana sadece bir tabloyu TRUNCATE (siler) yazdığını ve bir XML'den sağladığınız özel verilerle doldurduğunu söylemiş olsaydım. Anlaşılan, bu kadar. Büyülü kalıcı bağlantı yok, Avatar benzeri bir büyüme ve hayal dünyası ve geçici veri kümeleriyle dalga geçiyor. Günün sonunda, aynı şeyi “CREATE TEMPORARY TABLE” ile aynı şeyi yapabilirim, ki bu da ilişkileri koruduğu için daha da iyidir. Bu yüzden 'bu berbat uzantıyla zamanınızı boşa harcamayın' gibi bir şey söylemek isterdim, fakat sınırlı deneyimim nedeniyle, ben yapmayacağım. – Ben
Buradayken, bir an beni anlamaya çalışan bir kaç şey rapor edeceğim: "setUp()" yöntemine sahipseniz, parent :: setUp() işlevini çağırmanız gerekir. veritabanı doldurmayacak. Ve bu yöntemde, DbUnit, 'setUp()' olduğunda 'PDO :: ATTR_ERRMODE''nuzu" istisna "seviyesine yükseltecektir. Böylece," ERRMODE_SILENT "olsaydı bile beklemediğiniz durumlar için istisnalar elde edersiniz. onlar. Ayrıca, bir API bulamıyorum, bu yüzden kaynak kodunu incelemeniz ya da belgelere benzer bir kitap okumalısınız, ancak metin sayfalarında saklı önemli taşlar var./ rant – Ben
Yanıltıcı olmasından dolayı üzgünüm, “OLUŞTURMA TABLOSU OLUŞTUR” ilişkisini sürdürdüğünü söyledim - aslında, yabancı anahtarları korumaz. Yine de endişelenmeyin, aynı şeyi başarmak için bir 'CREATE TABLE' türünde değişkene geçin. – Ben