(PHPUnit) Можно ли протестировать mkdir, tempnam, realpath и move_uploaded_file?

Я делаю тест на Файловая система и я хотел знать, возможно ли проверить работоспособность некоторых функций.

я использую 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 в моем коде.

Функции, которые я не знаю, как проверить:

Кто-то знает, как сделать модульный тест для любой из перечисленных функций?

0

Решение

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 достаточно, но я не пробовал.

Надеюсь это поможет.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]