[英]Mocking methods from different class than tested one
我為其中一種方法編寫單元測試時遇到問題。 它從不同的類中調用方法,更糟糕的是,它會根據服務器連接進行一些處理,因此我需要以某種方式進行模擬,但是找不到解決方法。 我還想指出,經過測試的方法不會將這個不同的類對象作為參數,而是在自身內部實例化了它,因此它看起來像這樣:
public class Class1 {
public MyEnum method1(String myString){
Class2 class2 = new Class2();
return class2.method2(myString);
}
}
public class Class2 {
public MyEnum method2(String myString){
//returns some value after communication with a server
}
}
所以基本上我需要模擬method2返回值,但是因為它的類是在method1內部實例化的,所以我看不到這樣做的方法。 沒有實際的服務器連接,是否有任何測試方法?
根據經驗,您的單元測試應該只測試一個類,其他所有內容都應該被模擬。
作為良好設計的規則,所有依賴項都應該是可注入的,即,不應在Class1內部實例化Class2(並且絕對不要在此類的方法內部實例化,因為每次調用該方法都會創建一個新實例)。
如果以上任何規則被違反,則應考慮重寫代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.