2017-05-15 8 views
2

1つのプロジェクトでは、クラスのモックを作成する必要があり、コード内でこのモックを使用して動作をシミュレートする必要があります。 は私のテストクラスでは、私はこのコードを置く:他のクラスで非テストクラスでモックPHPUnitを使用

public function testExportCsv() 
{ 
    $mockObject = $this->getMockBuilder('\Client') 
     ->setConstructorArgs(array("0")) 
     ->getMock(); 
    $res = $this->searchDocApiDocumentsStub(); 
    $mockObject->method('searchDocuments') 
     ->willReturn($res); 
} 

public function searchDocApiDocumentsStub() 
{ 
    $res = array(); 
    $yml = Yaml::parse(file_get_contents("../src/ExportCSVBundle/Resources/config/generic.yml")); 
    $typeDoc = "FAC"; 
    $metas[$typeDoc] = $yml["ETT"][strtoupper($typeDoc)]; 


    foreach ($this->documents as $document) { 
     if ($document["type"] == "DocumentsAPI\\Model\\" . str_replace('$eq ', '', $typeDoc)) { 
      foreach ($metas[$typeDoc] as $field) { 
       $docres[] = $document["metas"][$field]; 
      } 
      $res = array_merge($res, $docres); 
     } 
    } 
    return $res; 
} 

「エクスポート」を、私はこのクラスは「クライアント」のオブジェクト、クラスIモックを持っている属性に、私はモッククラスを使用する必要があります。 次に、このオブジェクトを使用する必要があります。

この "searchDocuments"を私が作成したスタブにします。

$export = new \ExportLibraryBundle\ExportLibrary\Export(//What Do I put ??); 

明確であるかどうかはわかりませんが、ご協力いただきありがとうございます。

+0

しかし、私のmockObjectは、私は私のクラス「エクスポート」で、それを注入しないか、テストクラスにいるのですか? –

答えて

1

PHPUnitのデフォルトのモックエンジンは、PHPUnit自体に強く依存しているようです。

PHPUnitテストの外でモックを使用する場合は、外部モックライブラリ、すなわち、嘲笑。 PHPUnitに依存せず、PHPUnit Mockにはない優れた機能(demeter chain mock)がある点を除いて、これは非常に似ています。

はあなたがここにいくつかの例との比較を見ることができますhttp://docs.mockery.io/en/latest/

を参照してください:https://code.tutsplus.com/tutorials/mockery-a-better-way--net-28097

+0

ありがとうございます。私はそれをチェックします! –

関連する問題