(PHPUnit)是否可以测试mkdir,tempnam,realpath和move_uploaded_file?

时间:2016-04-13 20:33:07

标签: php phpunit vfs

我正在测试文件系统,我想知道是否可以测试某些功能是否正常运行。

我大多数人使用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的基本功能是否是功能在我的代码中。

我不知道如何测试的功能是:

有人知道如何对上述任何功能进行单元测试吗?

1 个答案:

答案 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的内容就足够了,但我还没试过。

希望这有帮助。