Evet, sahte nesneleri bir servise enjekte edebilirsiniz. Bir birim testi için, hizmet bulucu bile oyuna gelmiyor: Eğer bağımlılıkları ve mocks yapabilirsiniz bir grafik ile yapılandırılacak Servis yerini öğrenmek gerekir karmaşık entegrasyon testleri yazıyorsanız
$service = new MyService($mockDependency);
benim modülleri ile ne yapıyorum gibi kurulum şey: Buvarsayarak çalışır https://github.com/doctrine/DoctrineORMModule/blob/0.7.0/tests/DoctrineORMModuleTest/Util/ServiceManagerFactory.php
de DoctrineORMModule
içinde ServiceManagerFactory
bir örneğini bulabilirsiniz
$serviceLocator = ServiceManagerFactory::getServiceManager(); // see comment below
$dbConnectionMock = $this->getMock('My\Db\Connection');
$serviceLocator->setAllowOverride(true);
// replacing connection service with our fake one
$serviceLocator->setService('connection_service_name', $dbConnectionMock);
$service = $serviceLocator->get('service_that_uses_a_connection');
0, connection_service_name
ürününü içine enjekte eden bir fabrika tarafından başlatılır.
Ayrıca isterseniz Zend\Di
'u da kullanabilirsiniz, ancak bu gibi durumlarda gerçekten gerekli değildir.
Yardımlarınız için teşekkür ederiz! Umarım bir gün Zend belgeleri bu açıklığa kavuşacaktır! – AgileTillIDie
@AgileTillIDie lütfen kendinize katkıda bulunun! https://github.com/zendframework/zf2-documentation - GIT-fu'nız yoksa Github UI'de çevrimiçi düzenleyebilirsiniz. – Ocramius