我有有一個吸氣這樣的類時,不知道如何嘲笑類作品。我嘲笑了crudRepository
總是回來一隻固定的動物。我也嘲笑了assetRepository
並在我想測試的類上設置模擬庫。但是,我不明白它是如何工作的,爲什麼在調用attachAssets
方法時不能獲得空指針和錯誤?它有返回類型void。我的意思是,在attachAssets
方法中,我使用了我從未創建過的東西(會話等)。 Mockito是否會自動捕獲異常或是什麼,對於void方法還是什麼?換句話說,我並沒有剔除assetRepository
的attachAssets
方法,爲什麼它不會失敗(或者它應該失敗,我不知道)?調用方法
調用方法
回答
模擬是一個虛擬的實現。它是mocked類的一個子類,覆蓋了它的所有方法,並用alomst替換它們的實現(即它返回你告訴它返回的內容,拋出你告訴它拋出的內容,並記錄調用以便能夠在)。
下面是一些例子類:
public class AssetRepository {
public void attachAssets(Animal a) {
// some real implementation
}
}
而這裏通過的Mockito創建一個模擬實現的一個簡單的例子:
public class MockAssetRepository extends AssetRepository {
private List<Invocation> invocations = new ArrayList<>();
@Override
public void attachAssets(Animal a) {
// store the invocation to be able to chack if it has been called,
// how many times, etc.
invocations.add(new Invocation("attachAssets", a);
}
}
你看,不管你的實現是,它不叫,因爲attachAssets ()在模擬中被覆蓋。
如果您嘲笑AssetRepository,則在模擬上調用方法,並且實際執行無關緊要。相反,Mockito使用該方法的虛擬版本(它什麼都不做)。
Mockito的默認行爲,如果你還沒有告訴它什麼是不做任何事或返回null/0,無論哪個適當。如果你告訴它,它通常只會拋出異常。其他嘲笑框架可能會抱怨,如果你調用一些意想不到的方法。
啊,所以當你模擬時有空方法,並且其他返回類型的方法返回API中指定的默認值? – LuckyLuke
請注意,模擬方法的「默認」返回值不總是0,false或null。它也可以是一個空集合,「」或1,在某些情況下。檢查文檔以獲取更多詳細信息。 –
- 1. 方法 - 調用方法
- 2. 調用方法
- 3. 調用方法
- 4. 調用方法?
- 5. 調用方法
- 6. 方法調用
- 7. 調用方法
- 8. 方法調用
- 9. 調用方法
- 10. 調用方法
- 11. 調用方法
- 12. 方法調用
- 13. 調用方法
- 14. 調用方法
- 15. 調用方法
- 16. 調用方法()
- 17. 調用方法
- 18. 調用方法
- 19. 調用方法
- 20. 調用方法
- 21. 調用方法
- 22. 調用方法
- 23. 調用方法
- 24. 調用方法
- 25. 調用helper方法調用
- 26. 使用方法調用靜態方法?
- 27. 調度方法調用C#
- 28. Eclipse調試方法調用
- 29. 菊花鏈函數調用(方法1調用方法2,方法2調用方法3)
- 30. 調用方法C#
當然,這是有道理的。謝謝:) – LuckyLuke