(PHPUnit) 是否可以测试 mkdir、tempnam、realpath 和 move_uploaded_file?
(PHPUnit) Is it possible to test mkdir, tempnam, realpath and 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 的基本功能在我的代码中起作用。
我不知道如何测试的功能是:
有人知道如何对上述任何功能进行单元测试吗?
您提到的 4 个中的 3 个很容易编写简单的测试:
/**
* @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 的内容是不够的,但我没有尝试过。
希望对您有所帮助。
我正在对 文件系统 进行测试,我想知道是否可以测试某些功能是否正常运行。
我对其中的大部分使用 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 的基本功能在我的代码中起作用。
我不知道如何测试的功能是:
有人知道如何对上述任何功能进行单元测试吗?
您提到的 4 个中的 3 个很容易编写简单的测试:
/**
* @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 的内容是不够的,但我没有尝试过。
希望对您有所帮助。