I'm wondering, how do you guys
unit-test in CakePHP? How do you
incorporate tests in projects?
Ben genellikle Kek Çekirdek tarafından kullanılan SimpleTest kurulum kullanın. Ben her denetleyici ve model için bir test dosyası kurmak. Kod karmaşık seçenek vardır ya da yardımcı bir ölçüde değişken bir çıkışı varsa ben genellikle yardımcıları / bileşenler / davranışların çıkışını test edin. Ben buldum ve daha benim kapsama benim testleri (dosyaların sınırlı bir alt% 65 oldukça zayıf olduğu) testleri ile daha fazla hata nokta veya düzeltme ile kod kapsama bile böyle düşük bir derece ile yaklaşık% 65-75 ve o buluyorum olmadan doğru sabit.
What
parts of a project do you test? How do
you decide which parts gets to be
unit-tested?
Ben her zaman bütün Model fonksiyonlarını test. Özel bulunuyor bulmak, vb paginated sonuç kümeleri ben aşağıdaki için onları test. (Fikstür veriler üzerinde find) sonuçlarının doğru sayısı (fikstür veriler üzerinde find) doğru resultsets, alanların doğruluğu, döndürülen sonuç sayısı döndü ve her özel için doğru bir veri kümesi türünü bulabilirsiniz. Doğru pagination Ben herhangi bir buluntu, özel ya da aksi paginated setlerini kullanarak ediyorsam.
I always test controller functions that don't result in a view being rendered. As a habit I tend to move all logic that isn't dedicated to settings view vars or choosing a view to render to private / protected functions in the controller or to model function calls.
This lets me test the leftover controller actions ( ones with view output ) directly. If I render a view at all then those functions are likely behaving fine with any issues with what is rendered being further up the call stack.
Ben yerleştirilen özel seçenekleri ile çıkış yardımcıları test edin. Ben her zaman seçenekleri dizinin tüm permütasyon kapak yok ama iki farklı tuş birbirini dışlayan davranışlara neden ya da sonuç olarak benim biçimlendirme dahil olmak predicatble nitelikler için kontrol edebilirsiniz zaman - ben bu senaryoları için test edin.
Bir bileşen yerden veri alır ve bunları yöneten ben biçimini kontrol ya da bileşenlerin fonksiyonları üzerinde veri döndürebilir. Davranışları için aynı.
Ben doğru dönüş sonuçlar için bu sınıfın işlevlerini test yanı sıra bazı zorunlu hataları veya kasıtlı hata koşulları oluşturulması olacak yerde kullanılan statik bir sınıf varsa. Bir hata bir yönlendirme sonuçları, veya veri çeşit boru aşağı gönderiliyor özellikle. Bir başarısızlık sessiz ya da varsayılan bir değer verir eğer ben de emin gerçekten oluyor olun.
Do you guys still get to
finish the job before the deadline?
Buralarda ilk geçiş son başvuru tarihi her test için hesap biraz "yumuşak" olduğunu ve herhangi bir sorun kırpma kadar olduğunu. Ben bir düz eski kalem ve bazı grafik kağıt veya beyaz tahta kullanmanızı varsa bile, herhangi bir kod yazmadan önce kolayca testler temel bir dizi anlamaya olduğunu bulmak. Bu yaklaşım ile, bir proje ön% 25 daha fazla zaman alır ama app tüm ömrü boyunca size easily daha fazla aşağı gibi birçok sorunları kalmadan ön harcanan% 25 tasarruf edeceğini bulabilirsiniz boru hattı.
I'd really appreciate your answers.
Thanks in advance!
Önceden hoş geldiniz.
Ben de gerçek test teknikleri için bakmak için bazı linkler ve onlar bir araya gelip nasıl bir görsel anlamda almak için bir yol olarak eklemek için bu düzenlenebilir.
- http://bakery.cakephp.org/articles/view/testing-models-with-cakephp-1-2-test-suite
- http://book.cakephp.org/view/160/Testing
- http://debuggable.com/posts/unit-testing-in-cakephp-part-1---introduction-to-unit-testing:48102610-c5d0-4398-a010-76974834cda3
- http://mark-story.com/nodes/view/testing-cakephp-controllers-the-hard-way
Ayrıca, ben katılıyorum ve yazma testlerinde kek Devs katılmıyorum zorunda. Tek bir bileşen dosyası veya karmaşık bir eklenti olacak - - şov çalışan kod de onu ve testler dağıtacaklar beri ve ne büyük örnekleridir Bu is Çok iyi bir fikir yeniden kullanmak istediğiniz her şeyi test etmek bir kod parçası ile yapılabilir.
Eğer sahte nesneleri kullanmak zorunda çünkü kontrolörleri test için değil gibi - o bunu yapmak her zaman biraz daha kolay olur bir kere zahmet zor iş biraz yapmak için değil, sadece zayıf bir bahane olduğunu ve gerçekten, gerçekten yok hata oranını azaltmak ve kendi kod kendi anlayış bir huge artış sağlar.