PHPUnit में एक इंटरफ़ेस का मज़ाक उड़ाते समय, PhpStorm शिकायत करता है जब इसे किसी प्रकार-संकेतित फ़ंक्शन के पैरामीटर के रूप में उपयोग किया जाता है।phpStorm को अपेक्षित दिखने से कैसे रोकें ... PHPUnit mocks का उपयोग करते समय चेतावनी?
उदाहरण
interface InterfaceA{
}
class ClassA{
public function foo(InterfaceA $foo){}
}
class PhpStormTest extends PHPUnit_Framework_TestCase
{
public function testFoo(){
$mock = $this->getMock("InterfaceA");
$a = new ClassA();
$a->foo($mock);
}
}
$a->foo($mock);
PhpStorm पर चेतावनी Expected InterfaceA, got PHPUnit_Framework_MockObject_MockObject
छवि
साथ $mock
को रेखांकित करता है मुझे लगता है कि यह हो रहा है क्योंकि PHPUnit नकली एक रनटाइम बनाता है और PhpStorm नहीं जानता कि यह वास्तव में इंटरफ़ेस को कार्यान्वित कर रहा है।
आप तरीकों मजाक कर रहे हैं और साथ ही, आप 'उपयोग कर सकते हैं/** @ var InterfaceA | PHPUnit_Framework_MockObject_MockObject */', इसलिए यह दोनों वर्गों के लिए टाइपशॉट करता है। – Supericy
+1 @Supericy, मज़ाक उड़ाया वस्तु भी विरासत में नकली वस्तु इंटरफ़ेस विधि 'उम्मीद है()', जो वापस phpStorm लाने विधि नहीं पाया जाता है शिकायत करने के लिए देते हैं अगर आप को निर्दिष्ट दोनों 'InterfaceA' और' \ PHPUnit_Framework_MockObject_MockObject' –
बुरी बात पर ध्यान न दें यह है कि स्क्रूटाइज़र जैसे सीआई टूल्स इन एनोटेशन को पढ़ेंगे और आपके मॉक वैरिएबल को एक मुद्दे के रूप में मानेंगे क्योंकि (उदाहरण के लिए) "विधि अपेक्षा केवल PHPUnit_Framework_MockObject_MockObject में मौजूद है, लेकिन इंटरफ़ेस में नहीं है"। इसे एक मुद्दे के रूप में चिह्नित किया जाएगा और आपकी कोड रेटिंग प्रभावित होगी ...! –