6

Zend Framework 2 DocumentationのAlbumの例を使用して、アプリケーションを作成しました。

今、それを使用してユニットテストしているときに、withsayphpunitテーブルを持つテーブルをテストしているときに問題が発生joinしていますAccount_Type

これがそのコードです。

fetchAll機能は

function fetachAll()
{
    $sql = new Sql($this->tableGateway->getAdapter());

    $select = $sql->select();

    $select->from('Album')
           ->columns(array('id', 'name', 'account_type_id', 'managing_account_id'))
       ->join(array('AT' => 'account_type'), 'album.account_type_id = AT.account_type_id');

    $resultSet = $this->tableGateway->selectWith($select);

    return $resultSet; 
}

上記の表のユニットテストコードはです。

public function testFetchAllReturnsAllAlbums()
{
    $resultSet= new ResultSet();

    $mockTableGateway = $this->getMock(
        'Zend\Db\TableGateway\TableGateway', 
        array('select'), 
        array(), 
        '', 
        false
    );    

    $mockTableGateway->expects($this->once())
                     ->method('select')
                     ->with()
                     ->will($this->returnValue($resultSet));

    $albumTable = new AlbumTable($mockTableGateway);

    $this->assertSame($resultSet, $albumTable->fetchAll());
}

このエラーでエラーが発生します

Argument 1 passed to Zend\Db\Sql\Sql::__construct() must be an instance of
Zend\Db\Adapter\Adapter, null given,

メソッドのこの行$this->assertSame($resultSet, $albumTable->fetchAll());に対してtestFetchAllReturnsAllAlbums

誰かが参加のためにphpunitテストを行った場合は、同じ例を提供してください。

4

1 に答える 1

1

You might want to mock the getAdapter method of your Zend\Db\TableGateway\TableGateway object. This method is called and its returned value passed to the Zend\Db\Sql\Sql constructor.

于 2013-04-16T05:15:49.657 に答える