Hi,

I'm trying to test some Db components with PHPUnit and i've got some trouble
with Travis-CI about type hinting.

Here is the error message :

1) ZfcRbacTest\Provider\AdjacencyList\Role\DbTest::testNoRoles
Argument 1 passed to ZfcRbac\Provider\AdjacencyList\Role\Db::__construct()
must be an instance of Zend\Db\Adapter\AdapterInterface, instance of
Mock_Adapter_c7632875 given, called in
/home/travis/build/ZF-Commons/ZfcRbac/tests/ZfcRbacTest/Provider/AdjacencyList/Role/DbTest.php


But i got no error when i run phpunit on my machine.

My configuration :
php 5.4
phpunit 3.7.13

error_reporting = E_ALL


The error is triggered in the setUp method of my test :


<?php

namespace ZfcRbacTest\Provider\AdjacencyList\Role;

use ZfcRbac\Service\Rbac as RbacService;
use ZfcRbac\Provider\AdjacencyList\Role\Db;

use ZfcRbacTest\Bootstrap;
use ZfcRbacTest\RbacServiceTestCase;

class DbTest extends RbacServiceTestCase
{
    // mock adapter
    protected $_mockAdapter;

    /**
    * @var Db
    */
    protected $_db;

    public function setUp()
    {
        $rbacService = new RbacService();
        self::setRbacService($rbacService);

        Bootstrap::getServiceManager()->setAllowOverride(true);
        Bootstrap::getServiceManager()->setService('ZfcRbac\Service\Rbac',
$rbacService);

        // mock the adapter, driver, and parts
        $mockConnection =
$this->getMock('Zend\Db\Adapter\Driver\ConnectionInterface');
        $this->_mockDriver =
$this->getMock('Zend\Db\Adapter\Driver\DriverInterface');
       
$this->_mockDriver->expects($this->any())->method('getConnection')->will($this->returnValue($mockConnection));
        $this->_mockAdapter = $this->getMock('Zend\Db\Adapter\Adapter',
null, array($this->_mockDriver));

        // set up Db
        $this->_db = new Db($this->_mockAdapter, array());
    }

    /**
     * Test exception when no role can be loaded
     * @return boolean
     */
    public function testNoRoles()
    {
        // here goes my test
    }
}

and the Db class :

class Db extends AbstractProvider
{
    /** @var AdapterInterface */
    protected $_adapter;

    /**
     * @var array
     */
    protected $roles;

    /**
     * @var CommonOptions
     */
    protected $_options;

    /**
     * @param Connection $connection
     * @param array $options
     */
    public function __construct(AdapterInterface $adapter, array $options)
    {
        $this->_adapter = $adapter;
        $this->_options  = new DbOptions($options);
    }

}


I don't understand the difference between my platform and Travis.

Any idea ?

Thanks,

JM Leroux

PS : the whole story can be read here :
https://github.com/ZF-Commons/ZfcRbac/pull/37



--
View this message in context: 
http://zend-framework-community.634137.n4.nabble.com/ZF2-PHPUnit-mocks-Zend-Db-Adapter-and-Travis-CI-type-hinting-tp4658864.html
Sent from the Zend Framework mailing list archive at Nabble.com.

-- 
List: [email protected]
Info: http://framework.zend.com/archives
Unsubscribe: [email protected]


Reply via email to