2009-09-02 15 views
10

Jakie strategie wykorzystali ludzie z Perla podczas kpienia z obiektów łosia, które wprowadzą do innych obiektów łosia jako atrybuty ograniczające typ?Jak mam wyśmiać obiekty łosia?

Test::MockObject::Extends nie wydaje się dobrze grać z Moose. Potrzebuję obiektu do pobłogosławienia jako specyficznego pakietu, więc waniliowy test :: MockObject nie będzie działał. Jestem pewien, że inni ludzie mieli podobną trudność. Jak to rozwiązałeś?

Dodatkowe punkty za rozwiązania, które są już w CPAN.

+0

Nie jestem pewien, jaka jest polityka odpowiadania na twoje własne pytanie, ale znalazłem Test::Mock::Class na CPAN, który działa całkiem dobrze. Więc zamieszczam to tutaj w komentarzach. –

+0

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

+2

"Wołasz * to * an To zabawne, moja babcia mogłaby zrobić lepszy przedmiot, nigdy niczego nie osiągniesz, Łosia! :-P –

Odpowiedz

5

Cóż, nie jestem ekspertem od takich rzeczy, ale pierwszą rzeczą, na którą patrzę, jest Shaw Moore (Sartak) Test-MockOO.

Jeśli to nie zadziała, przyjrzę się użyciu mocy protokołu Metaobject i starrt ręcznie budując obiekty Mock. Spójrz na Class :: MOP :: Class and Moose :: Meta :: Class, jak programowo zastąpić określone metody i/lub tworzyć całe klasy w środowisku wykonawczym.

Jeśli to nadal nie działa, pomijam IRC i pytam. Wieszacy hejscy hitters spędzają tam czas i jestem pewien, że jeden z nich wpadł na tę sytuację.

+3

Jeśli ten moduł był już w CPAN, dałbym ci znacznik wyboru. Wygląda na to, że wykona to zadanie. –

1

Trochę własnej wtyczki, ale napisałem http://search.cpan.org/~cycles/Test-Magpie-0.05/lib/Test/Magpie.pm, może ci się to przyda. Próba stworzona z tym działa jak każda klasa i spełnia każdą możliwą rolę. W ogóle nie kpia z konkretnego obiektu lub klasy. Niestety wyszukiwanie CPAN jest trochę bzdurą, więc poszukiwanie "próbnego mocku" nie pokazuje tego w wynikach.

Należy również wspomnieć, że dokumentacja nie zawiera ogromną ilość motywacji lub przykładowy kod, więc może chcesz sprawdzić niektóre z tych testów:

Powiązane problemy