我正在尝试对我的捆绑进行单元测试,我想从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) 我有一个多维数组.
$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 ×2
doctrine-orm ×1
foreach ×1
loops ×1
optimization ×1
phpunit ×1
symfony-2.8 ×1
unit-testing ×1