我正在测试文件系统,我想知道是否可以测试某些功能是否正常运行。
我大多数人使用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 :(得分:2)
您提到的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的内容就足够了,但我还没试过。
希望这有帮助。