我正在使用(学习)vfsStream来测试目录树上的文件系统操作,其中有23,000个项目。
这是我在PHPUnit测试中尝试做的事情:
public function testMockFS() {
$buffer = (array) json_decode(file_get_contents(__DIR__ . '/resources/structure.json'));
$root = vfsStream::setup('/',null,$buffer);
$it = new FilesystemIterator($root);
foreach ($it as $fileInfo) {
echo $fileInfo->getFilename() . "\n";
}
}
注意:我知道这不会测试任何东西。现在,我只是想让迭代工作,所以我想在开始编写测试之前将目录结构打印到屏幕上。
structure.json 是来自生产的转储,包含文件系统的完整复制(没有文件内容,这与我们正在处理的内容无关)。
vfsStream :: setup()似乎工作正常。没有错误。
如何使用FilesystemIterator迭代vfsSystem?我觉得要么1)$ root应该从vfs中返回一个FilesystemIterator可以使用的目录,或者b)我应该传递“vfs :: /”作为参数,但FilesystemIterator不知道什么是“vfs ::”事情是。
我确信我正在努力实现这一目标。提前谢谢。
答案 0 :(得分:2)
我明白了。你必须使用vfsStream :: url('/ path / to / directory / you / want');
public function testMockFS() {
$buffer = (array) json_decode(file_get_contents(__DIR__ . '/resources/structure.json'));
$root = vfsStream::setup('/',null,$buffer);
$it = new FilesystemIterator(vfsStream::url('/'));
foreach ($it as $fileInfo) {
echo $fileInfo->getFilename() . "\n";
}
}