2013-02-02 32 views
6

Tôi đã sử dụng ví dụ về Album từ Tài liệu Zend Framework 2 và đã tạo một ứng dụng.Zend Framework 2 phpunit kiểm tra bảng có tham gia

Bây giờ trong khi hủy gửi bằng cách sử dụng phpunit Tôi gặp sự cố khi kiểm tra bảng có số join với bảng nói Account_Type.

Đây là mã cho nó.

fetchAll chức năng là

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; 
} 

Đơn vị mã kiểm tra cho bảng trên là.

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()); 
} 

Tôi nhận lỗi lỗi này

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

cho dòng này $this->assertSame($resultSet, $albumTable->fetchAll()); trong testFetchAllReturnsAllAlbums phương pháp.

Nếu bất kỳ ai đã thực hiện kiểm tra phpunit để tham gia, vui lòng cung cấp ví dụ cho tương tự.

+2

Bạn đang gọi '$ this-> tableGateway-> getAdapter()' trên đối tượng giả của bạn, trả về NULL và 'Zend \ Db \ Sql \ Sql' mong đợi một thể hiện của' Zend \ Db \ Adapter \ Adapter' . Tôi không phải là rất quen thuộc với các đối tượng giả lập được nêu ra, nhưng không phải là bạn chế phương pháp 'select' trên' TableGateway', nhưng trong 'AlbumTable' của bạn, bạn đang gọi phương thức' select' trên đối tượng 'Sql'? – Andy0708

Trả lời

1

Bạn có thể muốn thử phương pháp getAdapter đối tượng Zend\Db\TableGateway\TableGateway của mình. Phương thức này được gọi và giá trị trả về của nó được truyền cho hàm tạo Zend\Db\Sql\Sql.

Các vấn đề liên quan