Мой сайт будет иметь расширенный поиск. Pleople может пойти туда и искать права (например, автомобили). Я создал несколько тестов, которые проверяют количество результатов на основе параметров поиска. Я думаю о том, какие тесты я должен написать, затем я пишу его, затем добавляю данные в базу данных тестов. Но тут возникает проблема. Когда я вставляю новые значения в базу данных, мои старые тесты ломаются. Это потому, что я проверяю количество записей ...
<?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);
}
}
?>
Это нормально? Должны ли мои старые тесты ломаться при создании новых тестов?
Должны ли мои тесты быть привязаны к данным?
В моем поиске слишком много параметров, и они будут использоваться в одной форме (просмотр). Должен ли я создавать тесты для поиска каждого параметра или я должен тестировать их вместе? Должен ли я разделить его на несколько тестовых классов?
Спасибо.