Symfony2 denetleyicileri test etmek için hala PHP birim testleri üzerinde çalışıyorum. Test sınıflarım, WebTestCase'in türevleridir ve testler GET veya POST isteklerini gerçekleştirir, her şeyin düzgün çalışıp çalışmadığını kontrol edin. Tüm alttaki katmanları test etmek istiyorum, ancak veritabanımı testlerle karıştırmak istemiyorum. Ben, tüm modifikasyonları kontrol etmek için bir test senaryosu oluşturabileceğim bir bellek SQLite db'yi kullanmak istemiyorum. Bunu doktrin 1x ile nasıl yapılacağına dair pek çok ipucu buldum, ancak daha fazla çalışmazlar.Symfony/Doctrine Unit SQLite bellekli testler DB
class BlahblahTest extends WebTestCase {
public function testXXXYYY() {
// 1. Setup a new database with SQLite:memory:
// 2. create the database and all tables according the entities in my project
$this->createTestScenario(); // 3.
$crawler = $this->client->request('GET', '/testpage'); // 4.
// 5. Lots of checks against the database and/or the $crawler data
}
}
bu işi almak için herhangi bir şans: Yani böyle bir şey istiyor? peşin Hennes
Merhaba, Melvin. Her şeyden önce, evet, bu işe yarayacaktı. Ancak, soure kodunu değiştirmek benim tercih ettiğim yol değildir, çünkü bu testler otomatik olarak özel bir sunucu üzerinde çalışmalıdır. Yani varsayılan bağlantı manipüle edilmemelidir, ancak başka bir ikinci bağlantıya sahip olmak iyi olur. Testler, varsayılan bağlantılarını programsal olarak değiştirmelidir. Bunu yapmanın bir yolu olmalı. Hennes. – Hennes
Eminim sizi anlıyorsanız, bu aptalca bir açıklama olabilir. Ancak, eğer siz ispatlamıyorsanız, symfony testi env kullanmalısınız. Örneğim örneğin jenkins sunucusunda ve üretimde mükemmel çalışır çünkü yapılandırma yalnızca test env ayarlandığında değiştirilir. Config_test.yml config.yml için bir geçersiz kılma olarak yüklenir, böylece üretiminiz için konfigürasyon değişmeyecektir. – melvin
Ah, benim hatam, üzgünüm. Bilmedim, bu birim testler otomatik olarak test ortamını seçiyor. Bu yüzden, sqlite sürücümü, belirttiğiniz gibi config_test.yml dosyasına uyguladım. İyi çalışıyor. Teşekkür ederim. – Hennes