【发布时间】:2017-10-14 09:24:52
【问题描述】:
对于一个项目,我必须模拟一个类,并且我想在我的代码中使用这个模拟来模拟一种行为。 在我的测试类中,我输入了这段代码:
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;
}
在另一个类“导出”中,我必须使用我模拟的类,在属性中,这个类有一个“客户端”对象,即我模拟的类。 然后我必须使用这个对象。
class Export {
public function __construct(Client $docApiClient)
{
$this->docApiClient = $docApiClient;
}
$docs = $this->docApiClient->searchDocuments($client, $query, null, false, false, $metasToExport);
我希望这个“searchDocuments”成为我制作的存根。
$export = new \ExportLibraryBundle\ExportLibrary\Export(//What Do I put ??);
我不知道我是否清楚,但感谢您的帮助。
【问题讨论】:
-
但是我的 mockObject 在一个测试类中,我如何将它注入到我的类“Export”中?