Zend Framework 응용 프로그램에서 PHP Unit을 사용하고 싶습니다. 테스트 내에서 여러 데이터베이스 쓰기 작업을해야합니다. setUpBeforeClass() 메소드에서 MySQL 트랜잭션을 시작하려고합니다. 그것은 가능하지만 tearDownAfterClass() 메소드에서 트랜잭션을 롤백하려고하면 '활성 트랜잭션이 없습니다.'라는 메시지와 함께 예외가 발생합니다. 그리고 테스트 메소드는 데이터베이스에서 쓰기 작업을 수행합니다. 하지만 테스트 메서드 자체에서 트랜잭션을 시작합니다. 그것은 내가 원하는 것처럼 작동합니다. 왜 이렇게 반응하는지 이해할 수 없습니다. 누구 한테 설명하는 줄 알아?Zend Framework, PHPUnit 및 거래
<?php
class ConferenceControllerTest
extends PHPUnit_Framework_TestCase
{
/**
* A database connection.
* @var Zend_Db_Adapter_Pdo_Mysql
*/
protected static $hostDb = null;
public static function setUpBeforeClass()
{
static::$hostDb = Zend_Registry::get('db_host');
static::$hostDb->beginTransaction();
// The transaction for the Adapter is activated. But not inside the tests anymore.
}
public function testTest1()
{
// At this position teh transaction is not setted anymor? Why?
static::$hostDb->beginTransaction();
$sql = 'INSERT INTO test(test) VALUES(5);';
static::$hostDb->exec($sql);
}
public static function tearDownAfterClass()
{
try
{
static::$hostDb->rollBack();
}
catch(Exception $exception)
{
$message = $exception->getMessage();
Zend_Debug::dump($message);
}
}
}