我正在使用 PHPUnit 测试代码。我们如何测试该函数是否在循环内从同一类调用另一个函数?这是我的dashboardmanager.php
public function getZoneOrderValue($businessUnitId, $fromDate, $toDate)
{
$repository = $this->getRepository();
$query = $repository->getZoneCount($businessUnitId, $fromDate, $toDate);
$results = $this->type->search($query)->getAggregations('by_zone');
$results = $results['by_zone']['buckets'];
$i = 0;
foreach ($results as $result) {
$zoneOrderValue[$i] = array();
$zoneValue = $result['order_value']['value'];
$zoneId = $result['key'];
$zoneName = $this->getZoneName($zoneId);
array_push($zoneOrderValue[$i], $zoneName, $zoneValue);
$i++;
}
return $zoneOrderValue;
}
public function getZoneName($zoneId)
{
$repository = $this->getRepository();
$query = $repository->getZoneName($zoneId);
$zone = $this->type->search($query)->getResults();
$zone = $zone[0]->getFields();
$zoneName = $zone['zone'][0];
return $zoneName;
}
这是我的测试文件。我在 test_getZoneOrderValue() 中遇到问题。这是我的dashboardmanagertest.php
protected $dash;
protected $ob;
protected $container;
protected $prophet;
protected $elasticManager;
protected $elasticIndexManager;
protected $repoManager;
protected $resultSet;
protected $type;
public function setup()
{
$this->prophet = new \Prophecy\Prophet();
$this->ob = $this->prophet->prophesize('Doctrine\Common\Persistence\ObjectManager');
$this->container = $this->prophet->prophesize('Symfony\Component\DependencyInjection\Container');
$this->elasticManager = $this->prophet->prophesize('FOS\ElasticaBundle\Doctrine\RepositoryManager');
$this->elasticIndexManager = $this->prophet->prophesize('Elastica\Type');
$this->repoManager = $this->prophet->prophesize('UDN\Bundle\DataTransferBundle\Entity\SearchRepository\OrderReportRepository');
$this->resultSet = $this->prophet->prophesize('Elastica\ResultSet');
$this->type = $this->createIndex();
$this->type = $this->prophet->prophesize('Elastica\Type');
$type = $this->createIndex();
$index = $this->createIndex();
$this->dash = new DashBoardManager($this->ob->reveal(), $this->container->reveal(), $this->type->reveal());
}
public function test_getZoneOrderValue()
{
$queryResult = array('by_zone' => array('buckets' => array(array('key_as_string' => '','key' => '','doc_count' => '','order_value' => array('value' => '')))));
$this->container->get('fos_elastica.manager')->willReturn($this->elasticManager->reveal());
$this->elasticManager->getRepository('UDNDataTransferBundle:OrderReport')->willReturn($this->repoManager->reveal());
$this->repoManager->getZoneCount(2, '2015-02-22', '2015-02-22')->willReturn([]);
$this->container->get('fos_elastica.index.rosia_test.orders_test')->willReturn($this->type->reveal());
$this->type->search([])->willReturn($this->resultSet->reveal());
$this->resultSet->getAggregations('by_zone')->willReturn($queryResult);
$this
$this->repoManager->getZoneName(2)->willReturn([]);
$result = $this->dash->getZoneOrderValue(2, '2015-02-22', '2015-02-22');
//$this->assertCount(2, $result[0]);
}