こんにちは、phpunitテストの初心者です。Zend frameworkヌルでメンバ関数を呼び出すことによるPhpUnitテストエラー
私はこのチュートリアルに従ってきました:
: Zend Framework 2 : Centralize phpunit testその後、私はモジュールテスト
私のServiceProviderクラスでnamespace ModulesTests\ServiceProvidersTest\Model; use PHPUnit_Framework_TestCase; use ModulesTests\ServiceManagerGrabber; use User\Service\ServiceProvider; use Zend\ServiceManager\ServiceLocatorAwareInterface; use Zend\ServiceManager\ServiceLocatorAwareTrait; use Zend\Db\ResultSet\ResultSet; use Zend\Db\Adapter\Adapter; use Zend\Db\Sql\Sql; class TestServiceProviders extends PHPUnit_Framework_TestCase { protected $serviceManager; protected $serviceprovider; public function setUp() { $serviceManagerGrabber = new ServiceManagerGrabber(); $this->serviceManager = $serviceManagerGrabber->getServiceManager(); $this->serviceprovider = new ServiceProvider() ; } public function testSPdetails() { $stack = array('1','2'); $this->serviceprovider->getDetails($stack); } }
namespace User\Service; use Zend\ServiceManager\ServiceLocatorAwareInterface; use Zend\ServiceManager\ServiceLocatorAwareTrait; use Zend\Db\ResultSet\ResultSet; use Zend\Db\Adapter\Adapter; use Zend\Db\Sql\Sql; class ServiceProvider implements ServiceLocatorAwareInterface { use ServiceLocatorAwareTrait; public function getModel() { $em = $this->getServiceLocator()- >get('doctrine.entitymanager.orm_default'); return $em->getRepository('User\Entity\ServiceProvider'); } public function getDetails($data = null,$fields='*') { $where = 1; $company_ids = implode(',',$data); if(isset($company_ids)){ $where = 'sp.id IN('.$company_ids.')'; } if(isset($fields)){ } $db = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter'); $query = 'some query'; .....Rest code....... } } }
はこのエラーを取得しています作成
Caここで行方不明です何
が助けてください/opt/lampp/htdocs/project/module/User/src/User/Service/ServiceProvider.php
でヌルのメンバ関数のget()へのLL ...?1:
私はZendframework2からZendframework3 –
に移動するので、私は同じ問題を抱えているあなたは注意してくださいServiceLocatorAwareInterfaceあるべきです廃止され、すぐにフレームワークから削除されます。恐らくそれを使用しないことをお勧めします:) – Andrew