pl: Perl & LWP::UserAgent & Cookie setzen

Beitrag lesen

Ja, das ist lazy delegation. Und wer xCGI mocken will, muss vor dem ersten Aufruf an $self->{CGI} etwas zuweisen.

Nein. Es geht ja gar nicht darum xCGI zu mocken, sondern Methoden der eigenen Instanz, die z.B. xCGI injezieren. In der Praxis wird ein Mock erstellt, mit dem Mock die Methode aufgerufen und hinterher geprüft ob $mock->can('Methodname') eine Codereferenz liefert. can() ist eine Methode der Klasse UNIVERSAL, von dieser Klasse erbt jede Perl-Package.

Über @UNIVERSAL::ISA kannst Du übrigens auch Klassen automatisch laden. Wenn Du in diesem Array die Klasse 'Mock' einträgst und in Klasse Mock einen entsprechenden AUTOLOAD definierst, kann jeder Mock-Instanz Instanzen anderer Klassen unmittelbar selbst injezieren ohne die vorher mit use aufrufen zu müssen. So kann auch xCGI direkt gemockt werden.

MfG