2009-09-02 16 views
10

Quali strategie hanno le persone Perl utilizzate quando si prendono in giro oggetti Moose che verranno iniettati in altri oggetti Moose come attributi con vincoli di tipo?Come posso prendere in giro gli oggetti Moose?

Test::MockObject::Extends non sembra giocare bene con Moose. Ho bisogno che l'oggetto sia benedetto come un pacchetto specifico, anche se un test Vanilla: MockObject non funzionerà. Sono sicuro che altre persone hanno avuto difficoltà simili. Come lo hai risolto?

Punti extra per soluzioni già in CPAN.

+0

Non sono sicuro quale sia la politica di risposta alla tua domanda, ma ho trovato Test::Mock::Class su CPAN che funziona piuttosto bene. Quindi lo sto postando qui nei commenti. –

+0

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

+2

"Chiami * che * un oggetto? È ridicolo, mia nonna potrebbe fare un oggetto migliore di così. Non starai mai a nulla, Moose! " :-P –

risposta

5

Beh, io non sono l'esperto in queste cose, ma la prima cosa che guarderei è Shaw Moore's (Sartak) Test-MockOO.

Se ciò non funziona per voi, vorrei quindi utilizzare la potenza del Metaobject Protocol e iniziare a costruire manualmente oggetti Mock. Guarda Class :: MOP :: Class e Moose :: Meta :: Class per come sovrascrivere metodi specifici e/o creare intere classi in fase di runtime in modo programmatico.

Se questo non funziona ancora per te, supererei IRC e chiedere. I coglioni alce d'alce sono appesi là fuori e sono sicuro che uno di loro si è imbattuto in questa situazione.

+3

Se quel modulo era già su CPAN, ti darei il segno di spunta. Sembra che farebbe il lavoro. –

1

bit di una spina auto, ma ho scritto http://search.cpan.org/~cycles/Test-Magpie-0.05/lib/Test/Magpie.pm, forse lo troverete utile. Un finto creato con questo agisce come qualsiasi classe e svolge ogni ruolo possibile. Non prende in giro un oggetto o una classe specifici. Purtroppo la ricerca di CPAN è un po 'spazzatura, quindi la ricerca di "test di simulazione" non viene mostrata nei risultati.

Vorrei anche ricordare che la documentazione non contiene una quantità enorme di motivazione o codice di esempio, così si potrebbe desiderare di controllare alcuni dei test:

Problemi correlati