當你想爲緊密耦合的代碼編寫單元測試時,它可能會有點複雜。爲了使uni測試更容易,您應該更好地依賴抽象,而不是真正的實現。例如。 Order
類應該不依賴於服務層的實際實現,而應該引入一個更容易模擬的接口,而不是可能設置爲final
的類。
由於您的RequestHandler負責創建訂單實例,因此您必須提供一種在單元測試中模擬訂單類的方法。簡單的方法是創建一個簡單地創建一個新訂單實例的受保護方法。
protected Order createOrder(String someParam) {
return new Order(someParam);
}
在您的單元測試中,您現在可以擴展該類並覆蓋工廠方法。 使用Mockito這看起來像:
protected Order createOrder(String someParam) {
Order order = Mockito.mock(Order.class); // create mock object
// configure mock to return someParam when
// String Order#getSomeParam() gets invoked
Mockito.doReturn(someParam).when(order).getSomeParam();
return order;
}
「Order類本身所具有的業務層上非常緊張的依賴。」 - 爲什麼? – blank
@Bedwyr這不是我的設計。這就是這樣,我沒有任何控制權。 –