(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 的内容是不够的,但我没有尝试过。

希望对您有所帮助。