2009-09-02 7 views
10

Welche Strategien haben Perl-Leute benutzt, wenn sie sich über Moose-Objekte lustig gemacht haben, die sie als Attribute mit eingeschränktem Charakter in andere Moose-Objekte injizieren werden?Wie kann ich Moose Objekte verspotten?

Test::MockObject::Extends scheint nicht gut mit Moose zu spielen. Ich brauche das Objekt als ein spezifisches Paket, aber ein Vanilla Test :: MockObject funktioniert nicht. Ich bin sicher, dass andere Leute ähnliche Schwierigkeiten hatten. Wie hast du es gelöst?

Zusätzliche Punkte für Lösungen, die bereits auf CPAN sind.

+0

Nicht sicher, was die Politik der Beantwortung Ihrer eigenen Frage ist, aber ich fand Test::Mock::Class auf CPAN, die ziemlich gut funktioniert. Also poste ich es hier in den Kommentaren. –

+0

hrmmm hoops: Test :: Mock :: Klasse http://search.cpan.org/~dexter/Test-Mock-Class-0.03/lib/Test/Mock/Class.pm –

+2

"Sie rufen * das * an Objekt? Das ist lächerlich, meine Großmutter könnte ein besseres Objekt als das machen. Du wirst niemals etwas erreichen, Moose! " :-P –

Antwort

5

Nun, ich bin nicht der Experte für solche Dinge, aber das erste, was ich mir ansehen würde, ist Shaw Moores (Sartak) Test-MockOO.

Wenn dies nicht für Sie funktioniert, würde ich dann mit der Macht des Metaobject-Protokolls betrachten und manuell Mock-Objekte erstellen. Schauen Sie sich Class :: MOP :: Class und Moose :: Meta :: Class an, um bestimmte Methoden zu überschreiben und/oder ganze Klassen programmatisch zu erstellen.

Wenn dies immer noch nicht für Sie funktioniert, würde ich vorbei IRC schwingen und fragen. Die Elchheutigen hängen dort rum und ich bin mir sicher, dass einer von ihnen in diese Situation geraten ist.

+3

Wenn dieses Modul bereits auf CPAN war, würde ich Ihnen das Häkchen geben. Es sieht so aus, als ob es den Job machen würde. –

1

Bit eines Selbststeckers, aber ich schrieb http://search.cpan.org/~cycles/Test-Magpie-0.05/lib/Test/Magpie.pm, vielleicht finden Sie das nützlich. Ein damit geschaffener Schein wirkt wie jede Klasse und macht jede Rolle möglich. Es verspottet nicht ein bestimmtes Objekt oder eine bestimmte Klasse. Leider ist die Suche von CPAN ein bisschen Quatsch, so dass die Suche nach "test mock" es nicht in den Ergebnissen zeigt.

Ich sollte auch erwähnen, dass die Dokumentation nicht eine riesige Menge an Motivation oder Beispielcode enthält, so dass Sie möchten, können einige der Tests überprüfen: