2013-03-15 27 views
9

Benim Yii uygulaması denetleyiciler, modeller, bileşenler, modüller için phpunit kapsama alanı elde ediyor ancak herhangi bir görünüm almıyor. Sorun, phpunit'teki kod kapsamı yükleyicisinin, kapsam raporu hazırlanırken görünüm dosyasını içermesidir. Formlarla görüntülenme sayısı, bu bağlamda hiç bir şey olmadığı için bir çökmeye neden olan $this->beginWidget numaralı çağrılara sahiptir.yii phpunit kapsamındaki görünümler ile test ediliyor

Görünümler gerçekten önemli bir kod veya mantığa sahip değiller ancak yine de bazı koşullara ve hatta renderPartial numaralı telefonu aramak için döngülere sahip oldukları için, aynı zamanda bir görünüm kodunun da kapsanması iyi olur.

Bu soruna bir çözüm var mı?

+0

Harika soru! Keşke 10 dakika içinde öğrenebileceğiniz standart kayar kalıp işlevselliğinden ziyade, çerçeve kılavuzları ve kitaplarda ünite ve fonksiyon testine daha fazla önem verilmesini dilerim. – AndrewPK

cevap

4

CWebTestCase uzatmayı denediniz mi? Genelde, birim testleri yazarken gerekli verileri sağlamak için fikstürler ve şeyler vardır - ancak web uygulamaları için görünümler ve 'işlevsel' testlerle ilgili testlerle, genellikle bir tarayıcıyı taklit etmek ve web uygulamasında eylemleri gerçekleştirmesini sağlamak en kolay yoldur. Bir kullanıcı bunu kullanıyorsa. Şu anda, bu taklit Selenium (bence) ile en kolay yapılır.

Functional Testing'daki Yii Kılavuzu, Selenium Documentation'un yanı sıra başlamak için iyi bir yerdir. Ayrıca, selenyum kullanarak devam eden this book da var (En yeni baskının yapıp yapmadığını bilmiyorum, ama Yayınlanma Tarihi: 11 Ağustos, 2010 ile önceki sürümü biliyorum) ve Larry Ullman'ın Yii Book'un test ve bölümlerin kullanımıyla ilgili bölümleri olacak. Bu bölümü tamamladığında fonksiyonel testlerde selenyum.

Bu yardımcı olur umarız!

ayrıca CWebTestCase

CWebTestCase açıklamaya Güncelleme ', doğrudan o metin var iddia, görüş iç görünümleri test Widget oluşturulmasını test etmek için PHPUnit içinde kullanabileceğiniz bir fonksiyonel test temel uygular PHPUnit_Extensions_SeleniumTestCase uzanır 'bağlantılar' vb. tıklatınız. Bu testler hala çalıştırılmak üzere Selenium-RC sunucusunun çalıştırılmasını gerektirecek ve geçerli bir tarayıcı yapılandırılmasını gerektirecek şekilde komut satırından çalıştırılır. Geçerli bir tarayıcı setUp() fonksiyonun içine yerleştirilmiş aşağıdaki olduğunca az kod ile yapılandırılabilir: CWebTestCase olarak aşağıdaki sağlar PHPUnit_Extensions_SeleniumTestCase, uzanır olarak

$this->setBrowser('*firefox /usr/lib/firefox/firefox-bin'); 

bu kod kapsama belirten CWebTestCase tarafından temin edilemez, doğru değildir the documentation alıntı:

Copy 0123: testler Selenyum üzerinden çalışmasını için

PHPUnit_Extensions_SeleniumTestCase kodu kapma bilgi toplayabilir, web sunucunuzun belge kök dizinine girin. web sunucunuzun php.ini yapılandırma dosyasında sırasıyla auto_prepend_file ve auto_append_file gibi

PHPUnit/Extensions/SeleniumTestCase/prepend.php ve PHPUnit/Extensions/SeleniumTestCase/append.php

yapılandırın.PHPUnit_Extensions_SeleniumTestCase uzanır test vaka sınıfında, phpunit_coverage.php komut dosyası için bir URL yapılandırmak

protected $coverageScriptUrl = 'http://host/phpunit_coverage.php';

kullanın.

+0

Testlerim konsol tabanlı kontrol modelleri ve Xpath işlemlerinin yapılması ve hatta html çıktısını almasıdır. Phpunit tarafından yapılan görüşlere ilişkin kod kapsamı raporu bu konudur. Selenyum da kodları görünümlerde php satırlarını kapsamaz. – thevikas

+0

Lütfen aşağıdan güncellenmiş yanıtı aşağıya bakın - CWebTestCase'in "PHPUnit_Extensions_SeleniumTestCase" ürününün genişletilmesi nedeniyle tam olarak aradığınız şeyi sağladığına inanıyorum. Eğer değilse, sorunuzu yeterince anlamadım ve üzgünüm, daha fazla yardım edemedim. – AndrewPK