Bunların uygulanmasının bir parçası olarak başka bir nesne oluşturmak nesneler için, birim test yüzden sadece ilke nesne test alır yazmak için en iyi yolu nedir? Önemsiz bir örnek:
class myObj {
public function doSomethingWhichIsLogged()
{
// ...
$logger = new logger('/tmp/log.txt');
$logger->info('some message');
// ...
}
}
Ben logger nesne bağımlılık enjekte ve dolayısıyla bir birim test alay böylece nesne tasarlanmış olabileceğini biliyorum, ama bu her zaman böyle değil - daha karmaşık senaryolarda, diğer nesneleri oluşturmak veya statik yöntemleri aramaları yapmak gerekiyor .
Biz logger nesneyi, sadece myObj test etmek istemiyoruz, biz nasıl devam edeceğiz? Biz test script ile söndürdü "çift" oluşturmak mı? Gibi bir şey:
class logger
{
public function __construct($filepath) {}
public function info($message) {}
}
class TestMyObj extends PHPUnit_Framework_TestCase
{
// ...
}
Bu küçük nesneler için uygun görünüyor ama SUT dönüş değerlerine bağlıydı daha karmaşık API'ler için bir ağrı olur. Ayrıca, size davalarını nesneleri ile can aynı bağımlılık nesnesi çağrıları test etmek ne oldu isterseniz? Içinde geçirilen yerine SUT tarafından örneği nesneleri alaycı bir yolu var mı?
Ben mocks üzerinde man sayfasını okudum ama bağımlılık oluşan ziyade toplandığında bu durumu karşılamak için görünmüyor. Bunu nasıl yapabilirim?