小编Gau*_*rav的帖子

如何从EventManager Mock对象获取UnitOfWork或者如何在PHP单元中获取最后一个持久化对象?

我正在尝试对我的捆绑进行单元测试,我想从EventManager Mock中获取工作单元.基本上,我想获得最后一个持久化对象.我知道在正常的应用程序中,我可以使用EventSubscriber执行相同的操作.

基本上我想要实现的是,如果其标志处于挂起状态,则检查先前持久记录的状态,然后在下一个持久化中,我想将其更新为未挂起.

例:

以下是我获得活动管理器的方法:

/**
 * @param Entity\Friend|null $friendEntity
 * @return \Doctrine\ORM\EntityManager|\PHPUnit_Framework_MockObject_MockObject
 */
private function getEntityManager(Entity\Friend $friendEntity = null)
{
    $repository = $this
        ->getMockBuilder('\Doctrine\ORM\EntityRepository')
        ->disableOriginalConstructor()
        ->setMethods(['findBy'])
        ->getMock();
    $repository
        ->expects($this->any())
        ->method('findBy')
        ->will($this->returnValue(null));

    /** @var \Doctrine\ORM\EntityManager|\PHPUnit_Framework_MockObject_MockObject $entityManager */
    $entityManager = $this
        ->getMockBuilder('\Doctrine\ORM\EntityManager')
        ->setMethods(['getRepository', 'getUnitOfWork', 'persist'])
        ->disableOriginalConstructor()
        ->getMock();
    $entityManager
        ->expects($this->any())
        ->method('getRepository')
        ->will($this->returnValue($repository));
    $entityManager
        ->expects($this->any())
        ->method('getUnitOfWork')
        ->will($this->returnValue($repository));
    $entityManager
        ->expects($this->any())
        ->method('persist')
        ->with($friendEntity)
        ->will($this->returnValue(null));
    return $entityManager;
}
Run Code Online (Sandbox Code Playgroud)

在我的测试中:

/**
 * Test add friend when friend pending
 */
public function testAddFriendPending()
{
    $friendEntity = new Entity\Friend($this->friend, …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing doctrine-orm symfony-2.8

6
推荐指数
1
解决办法
494
查看次数

php多维数组循环优化

我有一个多维数组.

$count = count($main_array); // 6000+
Run Code Online (Sandbox Code Playgroud)

主阵列内的每个元素都有大约25个键

$count_sub_array = count($main_array[0]); // 25
Run Code Online (Sandbox Code Playgroud)

我有一个关键的约3000个独特价值.即

for($i=0; $i< $count; $i++){
    if($main_array[$i][$match]){
         array_push($unique_array,$main_array[$i][$match]);
    }
}
$unique_array = array_unique($unique_array); // count - 3000
Run Code Online (Sandbox Code Playgroud)

我想遍历数组中的每个元素并按唯一类型对它们进行分组.而且我还希望按照特定索引之一对元素进行分组

$unique_index = array('2012-08','2012-07','2012-06','2012-05','2012-04','2012-03','2012-02', '2012-01');
Run Code Online (Sandbox Code Playgroud)

目前唯一指数的#count是13

所以结果如下:

array (size=2689)
 0 => 
array (size=5)
  'type' => string 'abc' (length=19)
  'totalCost' => 
    array (size=13)
      '2012-07-01' => float 790.08
      '2012-08-01' => float 1501.84
      '2012-09-01' => float 1568.9
      '2012-10-01' => float 2756.04
      '2012-11-01' => float 2428.42
      '2012-12-01' => float 1901.09
      '2013-01-01' => float 2538.59
      '2013-02-01' => …
Run Code Online (Sandbox Code Playgroud)

php optimization foreach loops multidimensional-array

5
推荐指数
1
解决办法
724
查看次数