我有一個類,如下所示:
@Getter
@Setter
public class User{
@Autowired
Logger log;
private String name;
private String age;
public String toJson(){
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = null;
try{
jsonString = objectMapper.writeValueAsString(this);
}catch(JsonProcessingException jsnEx){
log.writeErr(" Error while parsing the Json" jsnEx.getMessage());
}
return jsonString;
}
}
現在我正在嘗試為此撰寫一個單元測驗用例,我可以在其中拋出例外并使用 Mockito 對 catch 子句進行單元測驗,但我無法模擬它。我注意到物件映射器類在內部將所有內容都轉換為字串,即使我將名稱和年齡設定為空。誰能幫我解決這個問題?
uj5u.com熱心網友回復:
使用 Spring 的建構式注入。這將允許您在類中注入模擬的 ObjectMapper,然后您可以在測驗中設定行為。見下文。
@Getter
@Setter
public class User{
private String name;
private String age;
private final Logger log;
private final ObjectMapper objectMapper;
public User(Logger log, ObjectMapper objectMapper){
this.log = log;
this.objectMapper = objectMapper;
}
public String toJson(){
String jsonString = null;
try{
jsonString = objectMapper.writeValueAsString(this);
}catch(JsonProcessingException jsnEx){
log.writeErr(" Error while parsing the Json" jsnEx.getMessage());
}
return jsonString;
}
}
// Test
@Before
public setup(){
@Mock
Logger log;
@Mock
ObjectMapper objectMapper;
testObject = new User(log, objectMapper);
}
@Test
public test_toJson(){
// given
when(objectMapper.writeValueAsString(any())).thenThrow(new JsonProcessingException("Fake exception"))
// when
testObject.toJson()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/407855.html
標籤:
上一篇:Junit5對屬性測驗類執行測驗
