Jak zmienić domyślną wartość zwracaną dla ciągów w Mockito?

Ten numer z 2010 r. Wskazuje na to, co próbuję zrobić.

Pracuję nad testem jednostkowym, który wykonuje kod, który wymaga wielu wyszydzonych obiektów do zrobienia tego, co trzeba (testowanie renderowania HTML + PDF). Aby ten test zakończył się sukcesem, potrzebuję wygenerować wiele wyszydzonych obiektów, a każdy z tych obiektów ostatecznie zwróci niektóre dane String do testowanego kodu.

I myśleć Mogę to zrobić, wdrażając własneAnswer klasa lubIMockitoConfiguration, ale nie jestem pewien, jak je zaimplementować, więc wpływają tylko na metody zwracające ciągi.

Czuję, że poniższy kod jest zbliżony do tego, czego chcę. Rzuca wyjątek rzucania,java.lang.ClassCastException: java.lang.String cannot be cast to com.mypackage.ISOCountry. Myślę, że to oznacza, że ​​muszę jakoś domyślnie lub ograniczyćAnswer wpływa tylko na ustawienia domyślne dlaString.

private Address createAddress(){
    Address address = mock(Address.class, new StringAnswer() );

    /* I want to replace repetitive calls like this, with a default string. 
    I just need these getters to return a String, not a specific string.

    when(address.getLocality()).thenReturn("Louisville");
    when(address.getStreet1()).thenReturn("1234 Fake Street Ln.");
    when(address.getStreet2()).thenReturn("Suite 1337");
    when(address.getRegion()).thenReturn("AK");
    when(address.getPostal()).thenReturn("45069");   
    */

    ISOCountry isoCountry = mock(ISOCountry.class);
    when(isoCountry.getIsocode()).thenReturn("US");
    when(address.getCountry()).thenReturn(isoCountry);

    return address;
}

//EDIT: This method returns an arbitrary string
private class StringAnswer implements Answer<Object> {
    @Override
    public Object answer(InvocationOnMock invocation) throws Throwable {
        String generatedString = "Generated String!";
           if( invocation.getMethod().getReturnType().isInstance( generatedString )){
               return generatedString;
           }
           else{
               return Mockito.RETURNS_DEFAULTS.answer(invocation);
           }
       }
}

Jak mogę skonfigurować Mockito, aby domyślnie zwracał wygenerowany String dla metod na szyderczej klasie, która zwraca String?Znalazłem rozwiązanie tej części pytania dotyczącego SO

Aby uzyskać dodatkowe punkty, jak sprawić, aby wygenerowana wartość była ciągiem w postaciClass.methodName? Na przykład"Address.getStreet1()" zamiast tylko losowego ciągu?

questionAnswers(1)

yourAnswerToTheQuestion