CakePHP Birim test?

2 Cevap php

I'm wondering, how do you guys unit-test in CakePHP? How do you incorporate tests in projects? What parts of a project do you test? How do you decide which parts gets to be unit-tested? Do you guys still get to finish the job before the deadline?

Ben gerçekten cevapları takdir ediyorum. Şimdiden teşekkürler!

2 Cevap

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.

  1. http://bakery.cakephp.org/articles/view/testing-models-with-cakephp-1-2-test-suite
  2. http://book.cakephp.org/view/160/Testing
  3. http://debuggable.com/posts/unit-testing-in-cakephp-part-1---introduction-to-unit-testing:48102610-c5d0-4398-a010-76974834cda3
  4. 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.

Sen this bakmak isteyebilirsiniz.

CakePHP ile çok aşina değilim, ama genellikle phpunit kullanın. Ben oldukça iyi phpunit entegre Netbeans'ı, (bu sizin için bir seçenek olmadığını bilmiyorum) kullanın. Bu hangi kullandığınız web framework bağımsız birim testleri çalıştırmak mümkündür.

Ben genellikle tüm veri kaynağı bağlantısı (tüm veri erişim katmanı) test ve beklendiği gibi sebat çalışır sağlamak. Ayrıca, sizin uygulamanızda herhangi bir iş belirli bir mantığı varsa, test it, bunun aslında çalıştığını biliyorum ki. Ben test herhangi bir uzun bir deneyimi yok, ama diğerleri görüşlerinizi test etmenizi öneririm varsayalım. Şahsen ben :) hehe, bunun için tarayıcıda F5 kullanın. Bu AJAX işlevselliği gelince ben her bir bit (istek şeyi yapar ve / veya istenilen sonucu alır,) test edin.

Zaman / tarihler konusunda, kesin bir şey proje test yararlanacak olmasıdır. Bunları istediğiniz gibi uygulama yapı taşları çalıştığını sağlamak için bir test formu kullanarak değilken tarihini aşan için olasılık yolu büyük. Senin uygulaması (çoğu durumda yapılacak olan) büyüdükçe diyelim, herhangi bir ünite testleri ve uygulama başarısız yok. Nasıl ayıklamak nerede biliyor musunuz, ve ne kadar daha zaman sorun ararken kullanmak istiyorsunuz? Anlamak için önemli şey bu küçük parçalar çok olsun zaman küçük bir parça kod çalışır güvence gerçekten çok önemli olduğudur.

Bu işlevsellik doğrudan yol olmadığından testler yazılı harcanan zaman, verimsiz gibi görünebilir, ancak zamanla gerçekten önemli bir rol oynuyor. Sigorta biçimi olarak bakmak.