2016-03-18 29 views
1

我寫我的課測試,但我收到此錯誤:PHPUnit的斷言如果兩個數組相等

PHPUnit_Framework_MockObject_Builder_InvocationMocker Object (...) does not match expected type "array". 

我的測試類:

<?php 

namespace User\UserBundle\Tests\Dto\Template; 

use User\UserBundle\Dto\Template\GenerateReportsTemplate; 
use User\UserBundle\Doctrine\DatabaseRepository; 
use User\UserBundle\Validation\ValidationClass; 

class GenerateReportsTemplateTest extends \PHPUnit_Framework_TestCase 
{ 

    public static $reportData = array 
    (
     'rowid' => '', 
     'emailaddress' => '', 
     'firstname' => '', 
     'surname' => '', 
     'contact_number' => '', 
    ); 

    protected $object; 

    public $validate; 

    public $db; 

    protected function setUp() 
    { 

     $this->validate = $this->getMockBuilder('User\UserBundle\Validation\ValidationClass') 
      ->disableOriginalConstructor() 
      ->getMock(); 

     $this->db = $this->getMockBuilder('User\UserBundle\UFODoctrine\DatabaseRepository') 
      ->disableOriginalConstructor() 
      ->getMock(); 

     $this->object = $this->createGenerateReportsTemplateInstance(); 
    } 

    public function createGenerateReportsTemplateInstance() 
    { 
     return new GenerateReportsTemplate 
     (
      $this->validate, 
      $this->db 
     ); 
    } 

    public function reportTestData() 
    { 

    } 

    public function testGenerateReports() 
    { 

     $data = array 
     (
      'rowid' => '', 
      'emailaddress' => '', 
      'firstname' => '', 
      'surname' => '', 
      'contact_number' => '', 
     ); 

     $report = $this->db->expects($this->any()) 
        ->method('getReportData') 
        ->will($this->returnValue(self::$reportData)); 

     $this->assertEquals($data, $report); 

    } 

} 

我要檢查什麼樣本數據等於由存根方法返回的數據getReportData

我相信存根返回對象,我想比較它與數組,如果多數民衆贊成在什麼情況下我怎麼能斷言兩個...?

Ps。我使用的Symfony2和PHPUnit的

回答

5
$this->assertEquals($data, $report); 

數組比較的對象,居然;)

$this->assertEquals($data, $this->object->getReportData()); 

會做你想要

+0

葉對不起數組對象是什麼:P無論是方式只是想你的解決方案,我得到'調用未定義的方法PHPUnit_Framework_MockObject_Builder_InvocationMocker :: getReportData()' – John

+1

嘗試改變斷言:'$這個 - >的assertEquals($數據,$這個 - >對象 - > {} YOUR_METHOD_HERE()) ;' – hasumedic

+0

不得不添加PARAMS以及但是它的工作原理;)THX – John

相關問題