我的网站将有一个高级搜索。人们可以去那里搜索一个实体(例如汽车)。我创建了一些基于搜索参数检查结果数量的测试。我想我应该写什么测试,然后我写它,然后我将数据添加到测试数据库中。但问题来了。当我将新值插入数据库时,我的旧测试会中断。那是因为我正在检查记录的数量...
<?php defined('SYSPATH') or die('No direct access allowed!');
class Search_Test extends PHPUnit_Extensions_Database_TestCase
{
/**
* @return PHPUnit_Extensions_Database_DB_IDatabaseConnection
*/
public function getConnection()
{
$pdo = new PDO('mysql:dbname=db_test;host=127.0.0.1', 'root', null);
return $this->createDefaultDBConnection($pdo, 'db_test');
}
/**
* @return PHPUnit_Extensions_Database_DataSet_IDataSet
*/
public function getDataSet()
{
$fixture = realpath(dirname(__FILE__).'/../data/fixture.xml');
return $this->createXMLDataSet($fixture);
}
public function numberOfResultsDataProvider()
{
return array(
array(1, null, null, 1),
array(2, null, null, 3),
array(3, null, null, 0),
array('abc', null, null, 5),
array(null, 1996, 2003, 3),
array(null, 1996, 1999, 2),
array(null, 2002, 2003, 1),
array(null, 1500, 1800, 0),
array(null, 2003, 2003, 1),
array(null, null, 2005, 4),
array(null, 1996, null, 4),
array(null, null, null, 4),
array(null, 2003, 1996, 0),
array(null, 'abc', 2003, 4),
array(null, '1996', '1999', 2),
array(2, 2003, 2005, 2),
array(null, null, null, 4),
);
}
/**
* @dataProvider numberOfResultsDataProvider
*/
public function testNumberOfResults($brandId, $startYear,
$endYear, $numberOfResults
) {
$search = ORM::factory('search');
$search->setBrand($brandId)
->setYearRange($startYear, $endYear);
$results = $search->results();
$this->assertEquals($results->count(), $numberOfResults);
}
}
?>
正常吗?当我创建新测试时,我的旧测试是否应该中断?
我的测试应该受限于数据吗?
我的搜索有太多参数,它们将以相同的形式(视图)使用。我应该为每个参数创建测试还是应该一起测试?我应该把它分成更多的测试课吗?
谢谢。