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ự.
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