मेरे पास नियंत्रकों के लिए परीक्षणों की एक श्रृंखला है जो तीसरे पक्ष के एपीआई पर भरोसा करते हैं जिन्हें परीक्षण वातावरण में मजाक करने की आवश्यकता होती है। हम कार्यात्मक परीक्षण क्लाइंट क्रॉलर को ओवरराइड करते हैं और उन निर्भरताओं को नकल करते हैं जिन्हें हमें परीक्षण करने की आवश्यकता होती है। यहां कुंजी यह है कि प्रत्येक परीक्षण पर मोक्स बदल जाते हैं।नियंत्रक परीक्षणों में सिम्फनी 3.3 कंटेनर सेवाओं को ओवरराइट करना
Symfony 3.2 में यह ठीक काम किया लेकिन Symfony 3.3 में मैं प्रतिवाद चेतावनी की एक संख्या है जिस तरीके सेवाओं अब इंजेक्ट किया जाता करने के लिए:
एक उदाहरण नियंत्रक परीक्षण का मामला:
class MyControllerTest extends WebTestCase
{
private static $kernelModifier = null;
public function setKernelModifier(\Closure $kernelModifier)
{
self::$kernelModifier = $kernelModifier;
$this->ensureKernelShutdown();
}
protected static function createClient(array $options = [], array $server = [])
{
static::bootKernel($options);
if ($kernelModifier = self::$kernelModifier) {
$kernelModifier->__invoke();
self::$kernelModifier = null;
};
$client = static::$kernel->getContainer()->get('test.client');
$client->setServerParameters($server);
return $client;
}
protected function getPropertyClient()
{
$mockService = (new PropertyMock())->getPropertyMock();
$this->setKernelModifier(function() use ($mockService) {
static::$kernel->getContainer()->set('app.property_service', $mockService);
});
return static::createClient();
}
protected function getPropertyFailureClient()
{
$mockService = (new PropertyMock())->getPropertyFailureMock();
$this->setKernelModifier(function() use ($mockService) {
static::$kernel->getContainer()->set('app.property_service', $mockService);
});
return static::createClient();
}
}
वास्तविक परीक्षण:
public function testInvalidPropertyRequest()
{
$client = $this->getPropertyClient();
$client->request(
'POST',
'/webhook/property',
[],
[],
[],
''
);
$this->assertEquals(400, $client->getResponse()->getStatusCode());
}
प्रतिवाद त्रुटि:
Setting the "app.property_service" pre-defined service is deprecated since Symfony 3.3 and won't be supported anymore in Symfony 4.0: 3x
मैं 3.3 रिलीज प्रलेखन, बीसी ब्रेक और बहिष्कारों के माध्यम से रहा हूं और यह पता नहीं लगा सकता कि मैं कंटेनर सेवाओं को कॉन्फ़िगर करने के बाद मैक्स के साथ कैसे बदलूं।
किसी भी मदद की सराहना की है।
शायद यह आपकी मदद कर सकता है: https://stackoverflow.com/a/44948780/1652031 – TiMESPLiNTER
@TiMESPLiNTER इसके लिए धन्यवाद। हमने अंततः अपने परीक्षणों को दोबारा सुधारकर हल किया ताकि उन्हें कंटेनर को संशोधित करने की आवश्यकता न हो। –