Я делаю тест на Файловая система и я хотел знать, возможно ли проверить работоспособность некоторых функций.
я использую vfsStream для большинства из них, но эта виртуальная файловая система не работает с некоторыми функциями файловой системы.
Мне удалось проверить:
Смотрите пример:
public function unlink($file) {
return unlink($file);
}
Модульный тест:
public function setUp() {
$this->fileSystem = new FileSystem();
// Creates my Virtual File System
$tree = array('library' => array('test.txt' => 'conteudo do arquivo'));
$home = vfsStream::setup("home", '', $tree);
}
public function testUnlink() {
$this->assertTrue($this->fileSystem->unlink(vfsStream::url('home/library/test.txt')));
}
Тем не менее, я все еще получил еще 4 функции, которые мне нужно протестировать, и я не знаю, смогу ли я сделать это в PHPUnit.
Как видите, все они из PHP (например, unlink( )
), но я также изменил их, чтобы должным образом обрабатывать некоторые ошибки, хотя сейчас мой приоритет — проверить, функционирует ли базовая функция PHP в моем коде.
Функции, которые я не знаю, как проверить:
Кто-то знает, как сделать модульный тест для любой из перечисленных функций?
3 из 4 упомянутых вами достаточно просты для написания простых тестов для:
/**
* @test
*/
public function mkdirWorksAsExpected()
{
$tmp_dir = 'mkdirtest';
if (is_dir($tmp_dir)) {
rmdir($tmp_dir);
}
mkdir($tmp_dir);
$this->assertTrue(is_dir($tmp_dir));
}
/**
* @test
*/
public function tempnamWorksAsExpected()
{
$tmp_dir = 'tempnamtest';
$filename = tempnam($tmp_dir, 'test');
$this->assertTrue(file_exists($filename));
unlink($filename);
}
/**
* @test
*/
public function realpathWorksAsExpected()
{
$filename = tempnam('/tmp', 'test');
$this->assertEquals($filename, realpath($filename));
unlink($filename);
}
Тестирование move_uploaded_file () потребует от вас фактической имитации загрузки файла, используя что-то вроде Guzzle и конечной точки. Я не думаю, что манипулирования содержимым $ _POST достаточно, но я не пробовал.
Надеюсь это поможет.
Других решений пока нет …