Dbunit
ã ãããDbUnitã ããšããšã¯ããã¹ããå®è¡ããåã«ããŒã¿ããŒã¹ãã»ããã¢ããããããã®JUnitïŒJavaã¢ããªã±ãŒã·ã§ã³ã®åäœãã¹ãçšãã¬ãŒã ã¯ãŒã¯ïŒçšã«éçºãããŸããã ãã®çµæããã®æ¡åŒµæ©èœã¯éçºãããä»ã®xUnitãã¬ãŒã ã¯ãŒã¯ãç¹ã«PHPUnitã«ç§»è¡ãããŸããã çŸåšãMySqlãPostgreSqlãOracleãããã³SqliteããµããŒããããŠããŸãã
ãªãDbUnitãªã®ãïŒ
ã¢ããªã±ãŒã·ã§ã³ãšããŒã¿ããŒã¹ã®çžäºäœçšããã¹ãããã«ã¯ãããã«æ¬¡ã®æé ãå®è¡ããå¿ èŠããããŸãã
- ããŒã¿ããŒã¹ãšããŒãã«ã®æ§é ãèæ ®ã«å ¥ãã
- å¿ èŠã«å¿ããŠéå»ã®ããŒã¿æ¿å ¥ãããªãã¯
- ããžãã¹ããžãã¯ã®ããããã®æäœãå®è¡ããåŸãããŒã¿ããŒã¹ã®ç¶æ ã確èªããã«ã¯
- ããŒã¿ããŒã¹ãã¯ãªã¢ããŠããã¹ãããšã«ããäžåºŠç¹°ãè¿ããŸãïŒããã§ãªãå ŽåãåŸç¶ã®ãã¹ãã¯ä»¥åã®ãã¹ãã«äŸåããŸãïŒ
SQLã¯ãšãªã䜿çšããŠãããæåã§èšè¿°ãããšãããã«ååãšããŠåäœãã¹ããåªãããã«ãªããŸãã ããã«ãããã¯åäœãã¹ãã®äž»ãªååã®1ã€ã«å¯Ÿå¿ããŠããŸããããã¹ãã¯æå°éã«è€éã§ãæ倧éã«èªã¿ããããã®ã§ãªããã°ãªããŸããã
é çªã«
ã ãããã©ã®ããã«å³ã®ã¯ãããŒã¿ããŒã¹ãšã®çžäºäœçšã®è©Šéšã«åæ Œããªããã°ãªããªãã®ã§ããïŒ
- ããŒã¹ã¯ãªãŒãã³ã° ã æåã®èµ·åæã«ã¯ãããŒã¿ããŒã¹ã®ç¶æ ãããããªããããããŒãããéå§ããã矩åããããŸãã
- åæããŒã¿ïŒåºå®å ·ïŒãæ¿å ¥ããŸãã éåžžãã¢ããªã±ãŒã·ã§ã³ã«ã¯ãããã«åŠçããããã«ããŒã¿ããŒã¹ããååŸããåæããŒã¿ãå¿ èŠã§ãã ãããã¯ãããªããæ°ããæŽç·ŽããŒã¹ã䜿çšããå¿ èŠããããŸããã®ã§ãã
- ãã¹ããšãã¹ãçµæã®å®éã®ããã©ãŒãã³ã¹ã ã³ã¡ã³ãã¯ãããŸããã
PHPUnitã®ããŒã¿ããŒã¹ãã¹ãã±ãŒã¹
PHPUnitã®éåžžã®ãã¹ãã±ãŒã¹ã®å ŽåãPHPUnit_Framework_TestCaseã¯ã©ã¹ãç¶æ¿ããå¿ èŠãããã ãã®å ŽåãããŒã¿ããŒã¹ããã¹ãããå Žåã¯ããã¹ãŠãå€å°è€éã«ãªããŸãã
require_once "PHPUnit/Extensions/Database/TestCase.php"; class MyTest extends PHPUnit_Extensions_Database_TestCase { public function getConnection() { $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'root', ''); return $this->createDefaultDBConnection($pdo, 'testdb'); } public function getDataSet() { return $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/guestbook-init.xml'); } }
getConnectionïŒïŒãšgetDataSetïŒïŒã®2ã€ã®æœè±¡ã¡ãœãããå®è£ ããå¿ èŠããããŸãã 1ã€ç®ã¯ããŒã¿ããŒã¹ãšã®æ¥ç¶ã確ç«ããããã«å¿ èŠã§ããã2ã€ç®ã¯ããŒã¿ããŒã¹ãããŒãã«ã§æºãããå®éã®ããŒãã«ãåããããã§ãã
getConnectionïŒïŒã¯PDOã䜿çšããŠããŒã¿ããŒã¹ã«æ¥ç¶ããå¿ èŠããããŸãããã¢ããªã±ãŒã·ã§ã³ã¯PDOã䜿çšããŠããŒã¿ããŒã¹ãç §äŒããå¿ èŠã¯ãªãããšã«æ³šæããããšãéèŠã§ãã getConnectionïŒïŒã¡ãœããã«ãã£ãŠç¢ºç«ãããæ¥ç¶ã¯ããã¹ããšã¢ãµãŒã·ã§ã³ã®ããã«ããŒã¿ããŒã¹ãæºåããããã«ã®ã¿äœ¿çšãããŸãã
ããŒã¿ããŒã¹ã®åæã³ã³ãã³ãã¯ãPHPUnit_Extensions_Database_DataSet_IDataSetããã³PHPUnit_Extensions_Database_DataSet_IDataTableã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠæœè±¡åãããŸãã getDataSetïŒïŒã¡ãœããã¯ããã£ã¯ã¹ãã£ãååŸããã³æ¿å ¥ããããã«setUpïŒïŒã¡ãœããã«ãã£ãŠåŒã³åºãããŸãã ãã®äŸã§ã¯ãcreateFlatXMLDataSetïŒïŒãã¡ã¯ããªã¡ãœããã䜿çšããŠãXMLè¡šçŸããããŒã¿ã»ãããååŸããŸããã
DataTableïŒããŒã¿ã»ãã
ããã¯äœã§ããïŒ ãããã¯ãåé¡ã®æ¡åŒµæ©èœã®éèŠãªæŠå¿µã§ãã DataTableãšDataSetã¯ãå®éã®ããŒã¿ããŒã¹ã®ããŒãã«ãšã¬ã³ãŒãã®æœè±¡åã§ãã ããªãåçŽãªã¡ã«ããºã ã«ããããªããžã§ã¯ãã®èåŸã«ããå®éã®ããŒã¿ããŒã¹ãé ãããšãã§ããŸããããã¯ãããŸããŸãªæ¹æ³ã§å®è£ ã§ããŸãã
ãã®ãããªæœè±¡åã¯ãäºæ³ãããããŒã¿ããŒã¹ã®å 容ãšå®éã®å 容ãæ¯èŒããããã«å¿ èŠã§ãã äºæ³ãããã³ã³ãã³ãã¯ãæœè±¡åã«ããããŸããŸãªåœ¢åŒã§è¡šãããšãã§ããŸã-ããšãã°ãXMLãCSVãPHPé åã ããŒã¿ããŒãã«ããŒã¿ã»ããã€ã³ã¿ãŒãã§ãŒã¹ã¯ãããŒã¿ããŒã¹ããæåŸ ãããå®éã®ãœãŒã¹ããã®ããŒã¿ã®æ¯èŒãå¯èœã«ããŸãã
ãŸãããã¹ããå®è¡ããåã«ãDataSetãšDataTableã䜿çšããŠããŒã¿ããŒã¹ã®åæç¶æ ãèšå®ããŸãã
以äžã§ã¯ãããŒã¿ã»ããã®ããŸããŸãªãªãã·ã§ã³ãæ€èšããŸãã
ãã©ããXMLããŒã¿ã»ãã
ããã¯æãåçŽãªçš®é¡ã®ããŒã¿ã»ããã§ãã ã«ãŒãå ã®åèŠçŽ ã¯ãããŒã¿ããŒã¹ã®1ã€ã®ãšã³ããªãè¡šããŸãã èŠçŽ ã®ååã¯ãããŒãã«ã®ååãšãå±æ§ãšå€ã«å¯Ÿå¿ããå¿ èŠããããŸããããšãã°ããã£ãŒã«ããšãã£ãŒã«ãå€ã¯ããããã次ã®ããã«ãªããŸãã
<?xml version="1.0" encoding="UTF-8" ?> <dataset> <post post_id="1" title="My First Post" date_created="2008-12-01 12:30:29" contents="This is my first post" rating="5" /> <post post_id="2" title="My Second Post" date_created="2008-12-04 15:35:25" contents="This is my second post" /> </dataset>
ããã¯ã2ãšã³ããªããŒã¿ããŒã¹ã®æçš¿ããŒãã«ã«çžåœããŸã
post_id | ã¿ã€ãã« | äœææ¥ | å 容 | æ Œä»ã |
---|---|---|---|---|
1 | ç§ã®æåã®æçš¿ | 2008-12-01 12æ30å29ç§ | ããã¯ç§ã®æåã®æçš¿ã§ã | 5 |
2 | ç§ã®2çªç®ã®æçš¿ | 2008-12-04 15æäžåäºå25ç§ | ããã¯ç§ã®2çªç®ã®æçš¿ã§ã | ãã« |
äžè¬çã«ãããã¯éåžžã«ã·ã³ãã«ã§ç°¡åã§ãã
空ã®ããŒãã«ã¯ã空ã®ããŒãã«current_visitorsãªã©ã®ç©ºã®èŠçŽ ãšåçã§ãã
<?xml version="1.0" encoding="UTF-8" ?> <dataset> <current_visitors /> </dataset>
ãšã³ããªã®NULLå€ã¯ã察å¿ããå±æ§ã®æ¬ åŠãšããŠè¡šãããŸãïŒããã°ã®è©äŸ¡ãã£ãŒã«ãã®äŸãåç §ïŒããããã§ã¯1ã€ã®ç¹ãèæ ®ããå¿ èŠããããŸãã ãã©ããXML DataSetã®å ŽåãããŒãã«ã®æ§é ã¯æåã®èŠçŽ ãã€ãŸã æåã®èŠçŽ ã«å±æ§ããªããåãããŒãã«ã®åŸç¶ã®èŠçŽ ã«å±æ§ãããå Žåããããã®å±æ§ã¯ç¡èŠãããŸãã äŸãã°ãæåã®èŠçŽ ããè¡šã®ããã°ã®äŸã®å Žåã¯ããã®å€ã§DATE_CREATEDå±æ§ãåé€ããã«ã¯ããã®å±æ§ã®2çªç®ã®èŠçŽ ãããŒãã«ã«èæ ®ãããããšã¯ãããŸãããããã£ãŒã«ãã¯DATE_CREATEDãããããšã¯ãããŸããã
createFlatXmlDataSetïŒïŒã¡ãœããã§äœ¿çšããïŒ
class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function getDataSet() { return $this->createFlatXmlDataSet('myFlatXmlFixture.xml'); } }
XMLããŒã¿ã»ãã
ãã®ããŒãžã§ã³ã®XMLã«ã¯Flat XMLã®æ¬ ç¹ã¯ãããŸããããããè€éã§ãã
<?xml version="1.0" encoding="UTF-8" ?> <dataset> <table name="post"> <column>post_id</column> <column>title</column> <column>date_created</column> <column>contents</column> <column>rating</column> <row> <value>1</value> <value>My First Post</value> <value>2008-12-01 12:30:29</value> <value>This is my first post</value> <value>5</value> </row> <row> <value>2</value> <value>My Second Post</value> <value>2008-12-04 15:35:25</value> <value>This is my second post</value> <null /> </row> </table> </dataset>
ããŒãã«ã¯<table>èŠçŽ ã«ãã£ãŠå®å šã«è¡šããã<column>ã¯ããŒãã«ãã£ãŒã«ããå®çŸ©ããããã«ãã¹ãããã<row>ã¯ã¬ã³ãŒããè¡šããŸãã 次ã«ã<value>ã<row>ã«åã蟌ãã§ãæå³ã®ãããã£ãŒã«ããšNULLå€ã®<null />ãè¡šãããšãã§ããŸãã
空ã®ããŒãã«ã¯ã<row>èŠçŽ ã®ãªãããŒãã«ãšããŠè¡šãããŸãã
<?xml version="1.0" encoding="UTF-8" ?> <dataset> <table name="current_visitors"> <column>current_visitors_id</column> <column>ip</column> </table> </dataset>
createXMLDataSetïŒïŒã¡ãœããã§äœ¿çšããïŒ
class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function getDataSet() { return $this->createXMLDataSet('myFlatXmlFixture.xml'); } }
CSVããŒã¿ã»ãã
CSV圢åŒã§ã®ããŒãã«ã®è¡šç€ºïŒã«ã³ãåºåãå€-ããŒãã«ãä¿åããããã®æãåçŽãªåœ¢åŒïŒã ããã¯ããªãæããã§ãã
post_id,title,date_created,contents,rating
1,My First Post,2008-12-01 12:30:29,This is my first post,5
2,My Second Post,2008-12-04 15:35:25,This is my second post,
䜿çšã¯XMLãããå°ãè€éã§ãïŒ
class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function getDataSet() { $dataSet = new PHPUnit_Extensions_Database_DataSet_CsvDataSet(); $dataSet->addTable('post', 'post.csv'); return $dataSet; } }
䜿çšããã«ã¯ãã¯ã©ã¹PHPUnit_Extensions_Database_DataSet_CsvDataSetã®ãªããžã§ã¯ããäœæããå¿ èŠããããŸãã ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãCSV圢åŒãå®çŸ©ãã3ã€ã®åŒæ°ãåããŸãã
public function __construct($delimiter = ',', $enclosure = '"', $escape = '"'){}
ãã®åŸãaddTableã¡ãœããã䜿çšããŠããŒã¿ã»ããã«ããŒãã«ãè¿œå ããŸã-1ã€ã®ãã¡ã€ã«-1ã€ã®ããŒãã«ã
PHPã¢ã¬ã€
çŸæç¹ã§ã¯ãé åã䜿çšããããŒã¿ã»ããã®æšæºçãªå®è£ ã¯ãããŸããããå®è£ ã¯ç°¡åã§ã;ïŒ
次ã®åœ¢åŒã§ããŒã¿ã»ãããä¿åããå¿ èŠããããšããŸãã
array( 'post' => array( array( 'post_id' => 1, 'title' => 'My First Post', 'date_created' => '2008-12-01 12:30:29', 'contents' => 'This is my first post', 'rating' => 5 ), array( 'post_id' => 2, 'title' => 'My Second Post', 'date_created' => '2008-12-04 15:35:25', 'contents' => 'This is my second post', 'rating' => null ), ), )
å®è£ ïŒ
require_once 'PHPUnit/Extensions/Database/DataSet/AbstractDataSet.php'; require_once 'PHPUnit/Extensions/Database/DataSet/DefaultTableIterator.php'; require_once 'PHPUnit/Extensions/Database/DataSet/DefaultTable.php'; require_once 'PHPUnit/Extensions/Database/DataSet/DefaultTableMetaData.php'; class ArrayDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet { protected $tables = array(); public function __construct(array $data) { foreach ($data as $tableName => $rows) { $columns = array(); if (isset($rows[0])) { $columns = array_keys($rows[0]); } $metaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($tableName, $columns); $table = new PHPUnit_Extensions_Database_DataSet_DefaultTable($metaData); foreach ($rows as $row) { $table->addRow($row); } $this->tables[$tableName] = $table; } } protected function createIterator($reverse = FALSE) { return new PHPUnit_Extensions_Database_DataSet_DefaultTableIterator($this->tables, $reverse); } }
ããã€ãã®ã³ã¡ã³ã-ããŒã¿ã»ããã«ã€ããŠã¯ãæœè±¡ããŒã¿ã»ãããç¶æ¿ããŸãïŒãã©ãããªXMLãXMLãCSVãªã©ãç¶æ¿ããŸãïŒã ã³ã³ã¹ãã©ã¯ã¿ãŒã§ã¯ã以åã«åæããé åãæž¡ããŸãã ãã©ããXMLã®å Žåãšåæ§ã«ãããŒãã«æ§é ã¯æåã®ã¬ã³ãŒãã«ãã£ãŠæ±ºå®ãããŸããããã®å ŽåãNULLå€ãæ瀺çã«æå®ã§ãããããéèŠã§ã¯ãããŸããã ãšããã§ãæ§é ã¯ãPHPUnit_Extensions_Database_DataSet_DefaultTableMetaDataãªããžã§ã¯ããäœæããããšã«ãã£ãŠæ±ºå®ãããŸãã ãã®åŸãããŒãã«èªäœãäœæããæ§é ãæž¡ããŠãaddRowïŒïŒã¡ãœããã䜿çšããŠããŒãã«ã«ã¬ã³ãŒããè¿œå ããŸãã æœè±¡createIteratorã¡ãœãããå®è£ ããå¿ èŠããããŸãããè€éãªããšã¯äœããããŸãã:)
䜿çšæ³ïŒ
class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function getDataSet() { return new ArrayDataSet(array( 'post' => array( array( 'post_id' => 1, 'title' => 'My First Post', 'date_created' => '2008-12-01 12:30:29', 'contents' => 'This is my first post', 'rating' => 5 ), array( 'post_id' => 2, 'title' => 'My Second Post', 'date_created' => '2008-12-04 15:35:25', 'contents' => 'This is my second post', 'rating' => null ), ), )); } }
ã¯ãšãª/ããŒã¿ããŒã¹ããŒã¿ã»ãã
ã¢ãµãŒã·ã§ã³ã®å Žåãäºæ³ãããããŒã¿ã»ããã ãã§ãªããããŒã¿ããŒã¹ããã®å®éã®ããŒã¿ã»ãããå¿ èŠã§ãã QueryDataSetã¯ããã«åœ¹ç«ã¡ãŸãã
$ds = new PHPUnit_Extensions_Database_DataSet_QueryDataSet($this->getConnection()); $ds->addTable('post');
ãŸãã¯æ瀺çãªèŠæ±ã䜿çšããŠïŒ
$ds->addTable('post', 'SELECT * FROM post ORDER BY post_id');
ãŸããèªåçã«ã¡ãœããã®PHPUnit_Extensions_Database_DB_DefaultDatabaseConnectionã䜿çšããŠãæ¢åã®ããŒãã«ããã®ããŒã¿ã»ãããåŸãããã«ãæ¢åã®æ¥ç¶ã䜿çšããããšãã§ããŸã:: createDataSetïŒïŒïŒã®getConnectionïŒã§äœæããããªããžã§ã¯ãïŒïŒã createDataSetïŒïŒã«ãã©ã¡ãŒã¿ãŒãæž¡ããªãå Žåãæ¢åã®ãã¹ãŠã®ããŒãã«ããããŒã¿ã»ãããäœæãããŸãã ããªãã¯ãããŒã¿ããŒã¹å ã®ããŒãã«ã®ååãæã€ãã©ã¡ãŒã¿ã®é åãæž¡ãå ŽåãããŒã¿ã»ããã¯ããããã®ããŒãã«ããã®ã¿çæãããŸãã
眮æããŒã¿ã»ãã
ãã©ããXMLããŒã¿ã»ããã®NULLå€ã®åé¡ã«ã€ããŠã¯æ¢ã«è¿°ã¹ãŸããïŒCSVã®åé¡ã¯åãã§ã-ãã£ã¯ã¹ãã£ãŒã«NULLå€ãæ瀺çã«èšå®ããããšã¯äžå¯èœã§ãïŒã ããã¯ãç¹å¥ãªãã³ã¬ãŒã¿ãŒ-ReplacementDataSetã䜿çšããŠè§£æ±ºã§ããŸãã
require_once 'PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php'; class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function getDataSet() { $ds = $this->createFlatXmlDataSet('myFlatXmlFixture.xml'); $rds = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($ds); $rds->addFullReplacement('##NULL##', null); return $rds; } }
##'ãNULLïŒ; require_once 'PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php'; class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function getDataSet() { $ds = $this->createFlatXmlDataSet('myFlatXmlFixture.xml'); $rds = new PHPUnit_Extensions_Database_DataSet_ReplacementDataSet($ds); $rds->addFullReplacement('##NULL##', null); return $rds; } }
XMLã§## NULL ##ã䜿çšããŠãNULLå€ã瀺ãããšãã§ããŸãã
<?xml version="1.0" encoding="UTF-8" ?> <dataset> <post post_id="1" title="My First Post" date_created="2008-12-01 12:30:29" contents="This is my first post" rating="5" /> <post post_id="2" title="My Second Post" date_created="2008-12-04 15:35:25" contents="This is my second post" rating="##NULL##" /> </dataset>
ããŒã¿ã®ãã£ã«ã¿ãªã³ã°
倧èŠæš¡ãªããŒã¿ã»ããã®å ŽåãDataSetFilterã䜿çšããŠãã£ã«ã¿ãªã³ã°ãé©çšã§ããŸãã
require_once 'PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php'; class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function testIncludeFilteredPost() { $dataSet = $this->getConnection()->createDataSet(); $filterDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet); $filterDataSet->addIncludeTables(array('post')); $filterDataSet->setIncludeColumnsForTable('post', array('post_id', 'title')); // .. } public function testExcludeFilteredPost() { $dataSet = $this->getConnection()->createDataSet(); $filterDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet); $filterDataSet->addExcludeTables(array('foo', 'bar', 'baz')); $filterDataSet->setExcludeColumnsForTable('post', array('date_created', 'rating')); // .. } }
- > createDataSetïŒïŒ; require_once 'PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php'; class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function testIncludeFilteredPost() { $dataSet = $this->getConnection()->createDataSet(); $filterDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet); $filterDataSet->addIncludeTables(array('post')); $filterDataSet->setIncludeColumnsForTable('post', array('post_id', 'title')); // .. } public function testExcludeFilteredPost() { $dataSet = $this->getConnection()->createDataSet(); $filterDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet); $filterDataSet->addExcludeTables(array('foo', 'bar', 'baz')); $filterDataSet->setExcludeColumnsForTable('post', array('date_created', 'rating')); // .. } }
- > createDataSetïŒïŒ; require_once 'PHPUnit/Extensions/Database/DataSet/ReplacementDataSet.php'; class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function testIncludeFilteredPost() { $dataSet = $this->getConnection()->createDataSet(); $filterDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet); $filterDataSet->addIncludeTables(array('post')); $filterDataSet->setIncludeColumnsForTable('post', array('post_id', 'title')); // .. } public function testExcludeFilteredPost() { $dataSet = $this->getConnection()->createDataSet(); $filterDataSet = new PHPUnit_Extensions_Database_DataSet_DataSetFilter($dataSet); $filterDataSet->addExcludeTables(array('foo', 'bar', 'baz')); $filterDataSet->setExcludeColumnsForTable('post', array('date_created', 'rating')); // .. } }
æåã®ã±ãŒã¹ã§ã¯ãæã ã¯å¯äžã®ããŒã¿ã»ããã®ããŒãã«ã«æ®ãããŠããã ãã«post_idãšã¿ã€ãã«ã®ãã£ãŒã«ãã«ãã®ã¬ã³ãŒãã®å 容ãæçš¿ããŠãã ããã 第äºã« - ç§ãã¡ã¯ããã£ãŒã«ãã®DATE_CREATEDããšãè©äŸ¡ãã®ããŒãã«æé€å€ããããŒã¿ã»ããããŒãã«ãFOOãããããŒããšãããºããããã³ãã¹ããšã³ããªãŒããé€å€ããŠããŸãã
ããŒã¿ã»ããã®æ§æ
è€æ°ã®ããŒã¿ã»ããã1ã€ã«çµåã§ããŸãã ããŒã¿ã»ãããåãããŒãã«ãæã£ãŠããå Žåãã¬ã³ãŒãã¯ãããã«è¿œå ãããŸããäŸãã°ïŒ
ããŒã¿ã»ãã-1.xml
<?xml version="1.0" encoding="UTF-8" ?> <dataset> <post post_id="1" title="My First Post" date_created="2008-12-01 12:30:29" contents="This is my first post" rating="5" /> </dataset>
ããŒã¿ã»ãã-2.xml
<?xml version="1.0" encoding="UTF-8" ?> <dataset> <post post_id="2" title="My Second Post" date_created="2008-12-04 15:35:25" contents="This is my second post" /> </dataset>
ããããéçŽããŸãã
class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function getDataSet() { $ds1 = $this->createFlatXmlDataSet('dataset-1.xml'); $ds2 = $this->createFlatXmlDataSet('dataset-2.xml'); $compositeDs = new PHPUnit_Extensions_Database_DataSet_CompositeDataSet(); $compositeDs->addDataSet($ds1); $compositeDs->addDataSet($ds2); return $compositeDs; } }
ã¢ãµãŒã
å€ãã®å ŽåãããŒãã«å ã®ãšã³ããªã®æ°ã確èªããå¿ èŠããããŸãã ããã¯ãéåžžã®assertEqualsã䜿çšããŠå®è¡ã§ããŸãã
class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function testAddEntry() { $this->assertEquals(2, $this->getConnection()->getRowCount('post')); $blog = new Blog(); $blog->addPost("My third post.", "This is my third post."); $this->assertEquals(3, $this->getConnection()->getRowCount('post')); } }
ã "ããã¯ç§ã®ç¬¬äžã®ãã¹ãã§ããã"ãã¹ãã"ïŒ; class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function testAddEntry() { $this->assertEquals(2, $this->getConnection()->getRowCount('post')); $blog = new Blog(); $blog->addPost("My third post.", "This is my third post."); $this->assertEquals(3, $this->getConnection()->getRowCount('post')); } }
getRowCountïŒïŒã¡ãœããã¯ãæå®ãããããŒãã«ã®ã¬ã³ãŒãæ°ãè¿ããŸãã
ããŒãã«ãæ¯èŒããã«ã¯ãassertTablesEqualïŒïŒã¡ãœããã䜿çšããŸãã
class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function testTables() { $queryTable = $this->getConnection()->createQueryTable('post', 'SELECT * FROM post'); $expectedTable = $this->createFlatXmlDataSet("myFlatXmlFixture.xml")->getTable("post"); $this->assertTablesEqual($expectedTable, $queryTable); } }
æ¥ä»ããã§ãã¯ãããšãã«ãã¹ãã倱æããå¯èœæ§ãããããšãèŠããŠããå¿ èŠããããŸã-ãã£ã¯ã¹ãã£ãŒã«èšå®ãããæ¥ä»ããããçŸåšã®æéãããŒã¿ããŒã¹ã«æžã蟌ãŸããŠããå Žåããããã®æ¥ä»ãäžèŽããªãå Žåã¯ãã¡ã€ã«ãåãåããŸã ãããã£ãŠãæåŸ ãããçµæããæ¥ä»ãåé€ãããããšãå€ããããã«å¿ããŠãå®éã®ããŒã¿ã»ããã®åä¿¡ãå€æŽãããŸãã
$queryTable = $this->getConnection()->createQueryTable('post', 'SELECT post_id, title, date_created, contents, rating FROM post');
æåŸã«ãassertDataSetsEqualïŒïŒã䜿çšããŠããŒã¿ã»ãããçŽæ¥æ¯èŒã§ããŸãã
class MyTestCase extends PHPUnit_Extensions_Database_TestCase { public function testTables() { $dataSet = $this->getConnection()->createDataSet(array('post')); $expectedDataSet = $this->createFlatXmlDataSet("myFlatXmlFixture.xml"); $this->assertDataSetsEqual($expectedDataSet, $dataSet); } }
ãã®èšäºã®å€§éšåã¯ãBenjamin Eberleiã®èšäºãPHPUnitã«ããããŒã¿ããŒã¹ãã¹ãã®ç©¶æ¥µã®ã¬ã€ãããšããã¡ããå ¬åŒããã¥ã¢ã«ã«åºã¥ããŠæžãããŠããŸã ã