मैंने साइटपॉइंट्स Testing Symfony Apps with a Disposable Database ट्यूटोरियल का पालन किया। मैंने अपने टेस्टकेस में फिक्स्चर जोड़े और सेटअप के दौरान कोई त्रुटि दिखाई नहीं दी। अगर मैं फिक्स्चर में एक त्रुटि जोड़ता हूं (उदा। एक शून्य/झूठी फ़ील्ड खाली छोड़कर) त्रुटि दिखायी जाती है, इसलिए यह कोड निश्चित रूप से निष्पादित हो जाता है।मेमोरी sqlite में सेटअप के बावजूद हमेशा खाली
मेरे कॉन्फ़िग:
doctrine:
dbal:
default_connection: memory
connections:
memory:
driver: pdo_sqlite
memory: true
charset: UTF8
मेरी WebTestCase में मेरे सेटअप:
protected function setUp() {
parent::setUp();
self::bootKernel();
DatabasePrimer::prime(self::$kernel);
$this->loadFixtures([
'AppBundle\DataFixtures\ORM\UserData',
'AppBundle\DataFixtures\ORM\ArtistData'
]);
}
फिर भी, मेरी WebTestCase में ऐसा लगता है कि कोई टेबल्स मौजूद हैं। आउटपुट एक सिद्धांत अपवाद फेंकता है कि मेरी तालिका मौजूद नहीं है।
SQLSTATE[HY000]: General error: 1 no such table: my_user_table
मैं एक फ़ाइल में sql_lite पर जाते हैं तो सब कुछ किसी अन्य बदलाव के बिना ठीक काम करता है:
dbal:
default_connection: file
connections:
file:
driver: pdo_sqlite
path: %kernel.cache_dir%/test.db
charset: UTF8
किसी को भी कहा से सफलता मिली ट्यूटोरियल या इकाई परीक्षण के लिए एक SQLite स्मृति डाटाबेस का उपयोग कर और किसी भी संकेत है या विचार?
अद्यतन: मैंने यह सुनिश्चित करने के लिए कर्नेल को बंद नहीं किया है, इस पर मैंने अपना सेटअप बदल दिया है। यह मदद नहीं की:
parent::setUp();
$this->client = $this->getClient();
MemoryDbPrimer::prime(self::$kernel);
$this->loadFixtures([
'AppBundle\DataFixtures\ORM\UserData',
'AppBundle\DataFixtures\ORM\ArtistData'
]);
क्या आपने 'मेमोरी' से कनेक्शन नाम बदलने की कोशिश की है, उदाहरण के लिए 'default_connection: memory'' default_connection: default' या कुछ अन्य नाम? हो सकता है कि उस आरक्षित शब्द का उपयोग (क्योंकि यह कनेक्शन डेटा के भीतर ही एक संपत्ति है) एक मुद्दा पैदा कर रहा है। यह आपकी स्थिरता फ़ाइल भी पोस्ट करने लायक हो सकता है। –
@ जॉन जोसेफ: मैंने कोशिश की, फिर भी इससे कोई फर्क नहीं पड़ता। मेरी फिक्स्चर फाइल काफी बड़ी है इसलिए मैं ऐसा नहीं करूँगा। इसके अलावा, चूंकि यह sqllte फ़ाइल में अधिक काम करता है, मुझे संदेह है कि मेरे जुड़नार समस्या हैं। –
मुझे अभी भी लगता है कि आपका कर्नेल किसी भी तरह से बंद/रीबूट हो जाता है।कहां पता लगाने के लिए, आप 'print (" bootKernel() को \ n ") जोड़ सकते हैं; debug_print_backtrace(); 'विक्रेता/सिम्फनी/सिम्फनी/src/सिम्फनी/बंडल/फ्रेमवर्कबंडल/टेस्ट/कर्नेलटेस्टकेस.एफ़पी' में 'बूट कर्नेल()' फ़ंक्शन के शीर्ष पर और फिर प्रभावित परीक्षण मामलों में से एक चलाएं। – aferber