Có ai có một liên kết đến một hướng dẫn làm việc tốt hay một cuốn sách về cách bắt đầu với việc thêm lớp DBUnit vào các bài kiểm tra PHPUNit của tôi không?PHPUnit và DBUnit - bắt đầu
Tôi đã thử làm theo các mã trong
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 được tạo ra thông qua mysqldump lệnh. Tôi vui vẻ sử dụng CSV, hoặc thậm chí là một mảng trong bộ nhớ (bất cứ điều gì làm việc)
Thật không may tôi dường như không thể bắt đầu hệ thống này.
Sau một thời gian học DbUnit tốt, tôi muốn có ai đó nói với tôi rằng về cơ bản chỉ là 'TRUNCATE's (xóa) một bảng và điền nó với dữ liệu tùy chỉnh mà bạn cung cấp từ một XML. Rõ ràng, đó là nó. Không có kết nối liên tục huyền diệu, không có thế giới giống như thế giới về tăng trưởng và ước mơ và chơi đùa thông qua các tập dữ liệu tạm thời. Vào cuối ngày, tôi có thể làm điều tương tự với 'TẠO TEMPORARY TABLE' thậm chí còn tốt hơn vì nó duy trì quan hệ. Vì vậy, tôi muốn nói một cái gì đó như 'không lãng phí thời gian của bạn với phần mở rộng này crappy' nhưng do kinh nghiệm hạn chế của tôi, tôi sẽ không. – Ben
Trong khi tôi ở đây tôi sẽ báo cáo một vài điều mà đã cho tôi một thời gian để tìm ra: Bạn cần phải gọi 'parent :: setUp()' nếu bạn đã có một phương thức 'setUp()', nếu không thì cơ sở dữ liệu sẽ không phổ biến. Và trong phương thức đó, DbUnit sẽ "helpfully" nâng cấp 'PDO :: ATTR_ERRMODE' thành" exception "khi nó là' setUp() ', vì vậy ngay cả khi bạn có' ERRMODE_SILENT' bạn sẽ nhận được các ngoại lệ mà bạn không mong đợi chúng. Ngoài ra, tôi không thể tìm thấy một API, vì vậy bạn phải kiểm tra mã nguồn, hoặc đọc sách, giống như tài liệu, nhưng lâu hơn, với những viên đá quý quan trọng ẩn trong các trang văn bản./ rant – Ben
Xin lỗi vì đã đánh lừa, ở trên tôi đã nói 'TẠO TẠO TẠM TỪ 'duy trì quan hệ - thực ra, nó sẽ không duy trì các khóa ngoại. Đừng lo lắng, chỉ cần cuộn một biến 'CREATE TABLE' để thực hiện điều tương tự. – Ben