我有一個DAO和一個服務類。在服務等級CapService,我@Autowired
DAO類CapDAO的參考。 CapDAO類有一個私有類型爲int
的實例字段,它具有使用@Value
註釋從屬性文件注入的值。爲不同場景配置模擬對象的狀態
class CapDAO {
@Value("${someProperty}")
private int expiryTime;
}
class CapService {
@Autowired
private CapDAO capDAO;
}
有一種方法 - 在CapDAO
類,它從數據庫中檢索的帽,基於所述expiryTime
retrieveCap()
。該方法是從CapService
類中的另一種方法調用的。
CapService
類使用從DAO方法返回的列表創建另一個包裝該列表的對象。最後它返回那個數據結構。
現在,我正在使用Mockito
框架測試場景。我有兩種情況。在他們兩個中,我想調用CapService
類的方法,這會使我成爲對象。列表檢索表格數據庫將取決於CapDAO
類中expiryTime
的值。對象的內容也將由CapService
類方法返回。
在測試中,我調用Service
類中的方法,並檢查返回的值。由於DAO正在從屬性文件中讀取expiryTime
,因此兩個測試場景都無法傳遞相同的配置值。我必須將兩個不同配置的DAO
實例注入Service
類。
所以,我的問題是 - 有什麼辦法,我可以配置expiryTime
在CapDAO
類,創建兩個不同的情況下,也可以在只有一個實例,並注入那些CapService
基於情景?不,我沒有任何設置expiryTime
。是的,我知道我可以使用反射,但我想保留這作爲我的最後手段。
澄清:一個測試類,兩個測試,每個測試都有一個不同的'expiryTime'值? –
@SotiriosDelimanolis是的。我想我應該把一個測試移動到另一個班級,對嗎? –
也許吧。畢竟你確實有一個測試_suite_。如果您還沒有,請查看'@ DirtiesContext',但您仍然需要找到一種有效的方法來加載不同的屬性值。 –