SORU
16 ŞUBAT 2010, Salı


Nasıl mockito ile yöntemleri geçersiz alay yapmak

Nasıl boşluk ile alay yöntem döndürme türü?

Gözlemci desen ben hayata ama nasıl bilmiyorum çünkü Mockito ile alay edemem.

Ve internette bir örnek bulmaya çalıştım, ancak başaramadım.

Benim sınıf gibi görünüyor

public class World {

    List<Listener> listeners;

    void addListener(Listener item) {
        listeners.add(item);
    }

    void doAction(Action goal,Object obj) {
        setState("i received");
        goal.doAction(obj);
        setState("i finished");
    }

    private string state;
    //setter getter state
} 

public class WorldTest implements Listener {

    @Test public void word{
    World  w= mock(World.class);
    w.addListener(this);
    ...
    ...

    }
}

interface Listener {
    void doAction();
}

Sistem sahte ile tetiklenir. =( Yukarıda bahsedilen sistem durumu göstermek istiyorum. Ve iddia onlara göre.

CEVAP
17 ŞUBAT 2010, ÇARŞAMBA


Bu mockito API docs bir göz atın. Olarak bağlantılı belge bahseder (# 12) kullanabilirsiniz herhangi bir doThrow(),doAnswer(),doNothing(),doReturn() ailesinin yöntemleri mockito çerçeve alay void yöntemleri.

Örneğin

Mockito.doThrow(new Exception()).when(instance).methodName();

ya da eğer takip davranışı ile birleştirmek istiyorsanız

Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();

setState(String s) sınıf Dünya ayarlayıcı aşağıda alaycı bakıyorsun o küstah kodu setState alay için doAnswer yöntemi kullanır.

World  mockWorld = mock(World.class); 
doAnswer(new Answer<Object>() {
        public Object answer(InvocationOnMock invocation) {
            Object[] args = invocation.getArguments();
            return "called with arguments: "   args;
        }
    }).when(mockWorld).setState(anyString());

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AutoStream's Garage419

    AutoStream's

    15 EKİM 2007
  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008
  • MobileTechReview

    MobileTechRe

    6 HAZİRAN 2008