2016-10-18 53 views
0

我有一種使用傑克森反序列化我的POJO的方法。嘲笑一種方法在本地使用的傑克遜物體

我的類看起來是這樣的:

@Builder 
public class MyCustomClass { 
... 
... 
... 
} 

我的解碼方法看起來是這樣的:

public MyCustomClass decodeObject(String jsonString) { 
    ObjectMapper mapper = new ObjectMapper(); 
    MyCustomClass object = mapper.readValue(jsonString, MyCustomClass.class); 

    return object; 
} 

我寫一個單元測試方法測試解碼方法。我怎樣才能模擬objectMapper對象?我在看InjectMocks,但我不確定究竟該如何做。 是否有一種使用InjectMocks的特定方法?另外,InjectMocks是模擬局部變量的正確方法嗎?

回答

1

類改成這樣:

class MyClass{ 
    ObjectMapper mapper; 
    MyClass(ObjectMapper mapper) { 
     this.mapper = mapper; 
    } 

    public MyCustomClass decodeObject(String jsonString) { 
     MyCustomClass object = mapper.readValue(jsonString, MyCustomClass.class); 

     return object; 
    } 
} 

那麼你可以注入的對象映射器的模擬到類。

背後的想法是對象創建對於依賴關係不是Business類的責任。