Hi,
da ich Testen immer recht konsequent aus dem Weg gegangen bin, es aber doch gerne machen würde, hab ich mich in den letzten Tagen etwas mehr damit beschäftigt.
Folgende Frage aber:
Man geht von folgendem Quellcode aus:
Foo und Bar sind einfach zu testen. Ich erstelle mir einen Mock zu den Objekten und DI macht den Rest. Ich kann dann auch testen, ob $foo und $bar jeweils den Call auf method() bekommen - wie aber ist das bei $obj?
Besteht auf "auf Testen ausgelegtes Programmieren" tatsächlich komplett aus DI und verzichtet gänzlich auf sowas?
D.h. ich würde auch SomeObject der Funktion übergeben, mocken und es dann testen können. Was aber wenn ich mehrere von den Objekten brauche? Dann muss doch die komplette Implementierung von SomeObject anders aussehen (dann hätte sie wohl irgendeine instance()-Methode die mir jedes mal eine neue Instanz zurückliefert). Ist das Sinn der Sache?
Danke
da ich Testen immer recht konsequent aus dem Weg gegangen bin, es aber doch gerne machen würde, hab ich mich in den letzten Tagen etwas mehr damit beschäftigt.
Folgende Frage aber:
Man geht von folgendem Quellcode aus:
PHP-Code:
class Foobar {
public function doSomething(Foo $foo, Bar $bar) {
$obj = (new SomeObject())->foo();
$foo->method();
$bar->method();
return ;
}
}
Besteht auf "auf Testen ausgelegtes Programmieren" tatsächlich komplett aus DI und verzichtet gänzlich auf sowas?
D.h. ich würde auch SomeObject der Funktion übergeben, mocken und es dann testen können. Was aber wenn ich mehrere von den Objekten brauche? Dann muss doch die komplette Implementierung von SomeObject anders aussehen (dann hätte sie wohl irgendeine instance()-Methode die mir jedes mal eine neue Instanz zurückliefert). Ist das Sinn der Sache?
Danke
Kommentar