Phpunit 断言两个数组是否相等

4

我正在为我的课程编写测试,但是遇到了以下错误:

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返回的数据。

我相信存根返回对象,我想将其与数组进行比较,如果是这种情况,如何断言两者是否相同...?

附:我正在使用Symfony2和Phpunit。

1个回答

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

你实际上是在比较一个数组和一个对象 ;)

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

会按照您的要求进行操作。


抱歉,数组转对象失败:P 无论如何,我尝试了你的解决方案,但是出现了“调用未定义的方法PHPUnit_Framework_MockObject_Builder_InvocationMocker :: getReportData()”的错误。 - John
1
尝试将断言更改为:$this->assertEquals($data,$this->object->{YOUR_METHOD_HERE}()); - hasumedic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接