Вам нужно децентрализовать вашу базу данных, обычно с помощью уровня абстракции базы данных, который вы бы макетировали. Таким образом добавляя -> setDatabase () и т. Д. К объекту, который имеет метод, который вы используете. Тогда внутри вашего setUp () {...} вы должны установить объект базы данных в макет:
$this->object->setDatabase($mockDb);
Тогда вы бы изменили
$ result = mysql_query ($ query);
$ count2 = mysql_num_rows ($ result);
для использования некоторой формы PDO - чтобы вы могли вызывать setDatabase () с PDO Sql Lite. Например:
setUp() { $this->object->setDatabase($mockDb); }
testFunction() {
$rfid = 'the rfid to use in the test';
//make sure no videos exist yet
$this->assertEquals(0, count($this->object->getAvailableVideosByRfid($rfid, ..);
//you may want to assert that it returns a null/false/empty array/etc.
$db = $this->object->getDatabase();
$records = array(... some data ...);
$db->insert($records); //psuedo code
$vids = $this->object->getAvailableVideosByRfid($rfid, ..); //however you map
$this->assertEquals(count($records), count(vids));
foreach($vids as $video) {
//here you would map the $video to the corresponidng $record to make sure all
vital data was stored and retrieved from the method.
}
}
Как правило, все это делается в PDO Sqlite, чтобы не создавалась / не создавалась настоящая база данных только для модульного теста, чтобы она могла жить и умереть вместе с тестом, и любой разработчик мог бы использовать ее без необходимости в конфигурации.