2015-07-24 3 views
0

я есть обычай JsonSerialzier сериализовать даты в специальном формате:Как проверить пользовательские JsonSerializer с JUnit и Mockito

public class CustomDateJsonSerializer extends JsonSerializer<Date> { 

    @Override 
    public void serialize(Date value, JsonGenerator gen, SerializerProvider arg2) throws IOException, JsonProcessingException { 
     String outputDateValue; 
     //... do something with the Date and write the result into outputDateValue 
     gen.writeString(outputDateValue); 
    } 
} 

Он отлично работает, но как я могу проверить свой код с JUnit и Mockito? Вернее, как я могу издеваться над JsonGenerator и получить доступ к результату?

Благодарим за помощь.

+1

Возможно, в этом случае вы не хотите, чтобы дразнить генератор JSon (Jackson?), А просто использовать его. –

+0

Я попытался высмеять JsonGenerator (Джексон!). Но как обрабатывать метод void writeString (String s)? – Christoph

+0

Вы можете просто издеваться над 'JsonGenerator' и убедиться, что он вызвал метод writeString с ожидаемым' outputDateValue' – wjans

ответ

3

Вы можете сделать что-то вроде этого:

import static org.mockito.Mockito.verify; 
import static org.mockito.Mockito.times; 

@RunWith(MockitoJUnitRunner.class) 
public class CustomDateJsonSerializerTest { 

    @Mock 
    private JsonGenerator gen; 

    @Test 
    public void testOutputDateValue() { 
     CustomDateJsonSerializer serializer = new CustomDateJsonSerializer(); 
     serializer.serialize(new Date(), gen, null /*or whatever it needs to be*/); 

     String expectedOutput = "whatever the correct output should be"; 
     verify(gen, times(1)).writeString(expectedOutput); 
    } 

}