Şu anda diğer nesnelerden aynı nesne ve diğerleri diğer yöntemleri, bazı aramak zorunda benim sınıf içinde bir yöntemi var.
class MyClass
{
public function myMethod()
{
$var1 = $this->otherMethod1();
$var2 = $this->otherMethod2();
$var3 = $this->otherMethod3();
$otherObject = new OtherClass();
$var4 = $otherObject->someMethod();
# some processing goes on with these 4 variables
# then the method returns something else
return $var5;
}
}
Ben bütün TDD oyuna yeni değilim, ama think I tuşuna binaların anlamış olmanın biraz daha test edilebilir kod Kontrol Bağımlılık Enjeksiyon / İnversiyon için bazı strateji ile kompozisyon, gevşek bir bağlantı vardır için.
Nasıl bu özel durumun daha test edilebilir bir şey bir yöntem üstlenmeden hakkında nasıl gidiyor?
Ben kolaylıkla alay / işbirlikçi yöntemleri saplama böylece ben, bir parametre olarak metoda $this
nesne başvurusu geçmek? Bu tavsiye edilir veya denize gidiyor? Li>
class MyClass
{
public function myMethod($self, $other)
{
# $self == $this
$var1 = $self->otherMethod1();
$var2 = $self->otherMethod2();
$var3 = $self->otherMethod3();
$var4 = $other->someMethod();
# ...
return $var5;
}
}
Ayrıca, tek testler için söz konusu yöntemin bir saplama / mock nasıl enjekte düşünmek için olduğu gibi bağımlılıkları, TDD ile oldukça büyük bir anlaşma olduğunu bana açıktır. En TDDers kamu bağımlılıkları için birincil strateji olarak DI / IOC kullanıyor musunuz? hangi noktada abartılı hale gelir? Eğer verimli yapmak için bazı öneriler verebilir?