Ünite testleri alay PHP fonksiyonları

2 Cevap php

Ben birim test SimpleTest ile bazı PHP kodu ve ben belaya çalıştırmak. Bir veritabanı sınıfının benim testlerde ben PHPs mysql fonksiyonlar için bir beklenti ayarlamak mümkün olmak istiyorum. Ben phps mail function taklit istiyor mail fonksiyonu için bir sarıcı sınıfın benim testleri. Bunlar sadece bazı örnekler vardır.

Nokta: Ben (her zaman) Ben mail işlevini çağırır nasıl test etmek istiyorsanız, benim Posta sınıf e-posta gönderir olmadığını test etmek istemiyorum. Ben bu işlevler dönmek ne kontrol edebilmek istiyorum. Ben bir veritabanı, demirbaş ve bu sürü gerek olmadan benim Veritabanı sınıf test edebilmek istiyorum.

Ben test Ruby kod ile biraz tecrübe var, ve Test :: Unit ve RSpec izolasyon kodu test etmek çok kolay. Ben test PHP için yeni ve ben geçmek benim testleri almak için, ben gerektiğinde çok daha fazla test ediyorum gibi hissediyor.

Bir SimpleTest içinde yolu veya phpunit veya bu mümkün veya kolay kılan bazı diğer test framework var mı?

2 Cevap

Değil otomatik bir şekilde. Ne yapabilirsiniz, dış bağımlılıkları dışarıdan geçirilen nesneler sarılmış böyle bir şekilde kod yazmak için. Üretim ortamında sadece gerçek adaptörleri kadar tel edeceğiz, ancak test sırasında, sen koçanları veya mocks için tel olabilir.

Eğer gerçekten ısrar ederseniz, size sınıfları zamanında ve işlevlerini yeniden böylece php programlama modelini değiştirdiği runkit extension kullanabilirsiniz. Ancak bu harici ve standart dışı uzantıları olan, bu nedenle aklınızda keept. Etkili standardı yukarıda tarif edildiği gibi el ile bir yaklaşımdır.

Orada dahili runkit kullanan bir PHPUnit uzantısıdır ve çağırma Matchers, parametre kısıtları ve bir alay nesnesi yapabileceği her şeyi kullanmak için yeteneğine sahiptir.

https://github.com/tcz/phpunit-mockfunction