Problem: Not getting mocked DB adapter for use with all dependency Created mock adapter using: $this->getMockBuilder('Zend\Db\Adapter\AdapterInterface')->disableOriginalConstructor()->getMock(); But getting error: Error: Call to a member function createStatement() on null
Model file code:
<?php
namespace App\Model;
use Zend\Db\TableGateway\TableGateway;
use Zend\ServiceManager\Config;
use Zend\Db\TableGateway\Feature\GlobalAdapterFeature;
use Zend\Mvc\MvcEvent;
use Zend\Cache\Storage\Adapter\Redis;
use Zend\Db\Sql\Select;
use Zend\Db\Sql\Sql;
use Zend\Db\Sql\Expression;
use Zend\Db\Sql\Where;
class Product {
private $_tenantId;
private $_tableGateway;
private $_adapter;
private $_tableName = "product";
public function __construct($tenantid,$adapter){
$this->_tenantId = $tenantid;
$this->_adapter = $adapter;
$this->_tableGateway = new TableGateway($this->_tableName, $this->_adapter);
}
public function GetProduct($id,$fields) {
$select = new Select();
$select->columns($fields);
$select->from($this->_tableName);
$where = new Where();
$where->equalTo("tenant_id",$this->_tenantId);
$where->equalTo("product_id",$id);
$select->where($where);
$rowset = $this->_tableGateway->selectWith($select);
$row = $rowset->current();
return $row;
}
}
Test case:
<?php
namespace AppTest\Model;
use App\Model\Product;
use PHPUnit\Framework\TestCase;
use RuntimeException;
class ProductTest extends TestCase
{
protected function setUp() : void
{
$this->mockAdapter = $this->getMockBuilder('Zend\Db\Adapter\AdapterInterface')
->disableOriginalConstructor()
->getMock();
$this->product = new Product(123,$this->mockAdapter);
}
public function testGetProduct()
{
$result = $this->product->GetProduct('SKU-1',array('product_name','product_category'));
}
}
Above code is giving below error:
Error: Call to a member function createStatement() on null