2016-04-13 5 views
0

私はファイルシステムのテストを行っていますが、いくつかの機能が機能しているかどうかをテストできるかどうかを知りたかったのです。(PHPUnit)mkdir、tempnam、realpath、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の

+0

mkdir()と同じように、ディレクトリを作成して戻り値をチェックするだけです。mkdirはブール値を返します。 – MacGyer

答えて

2

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()は実際にがつがつ食うようなものとエンドポイントを使用してファイルのアップロードをシミュレートするためにあなたを必要とします。私は$ _POSTの内容を操作するだけで十分だとは思わないが、私はそれを試していない。

これが役に立ちます。

+0

さて、実際のディレクトリやファイルを作成したくないという別の解決策を見つけるのは現実的ではないと思いますが、Vfs Streamはこの機能では機能しません。ありがとう、クリス! move_uploaded_file関数をテストする方法を探して、私の質問で更新します。 –

関連する問題