我目前正在開發一個Scala項目,並且遇到了測試使用Singleton對象的代碼時遇到的困難。用類替換單例是否存在任何潛在的問題?
我單身是這樣的:
object SomeSingleton {
def someFunction(s: String): String = s + "b"
}
而且某處一個項目,我有它在的方法使用我想測試:
val s = SomeSingleton.someFunction("a")
我開發新的功能,我想SomeSingleton.someFunction
到在沒有真正的方法調用的情況下返回測試中的某個特定值,我使用Powermock在Java中執行了此操作,但是我沒有找到在Scala中執行此操作的方法。 我有一個想法,我怎麼還這樣做,但它意味着改變原有的代碼如下:
object SomeSingleton extends SomeSingletonClass{}
class SomeSingletonClass {
// Whole logic from SomeSingleton moves here
def someFunction(s: String): String = s + "b"
}
現在我可以SomeSingletonClass
取代SomeSingleton
使用和妥善嘲笑它。所以這裏是我的擔憂,這個項目並不小,它不是100%的測試覆蓋率,我對Scala來說是比較新的,所以我不確定它會帶來什麼壞結果?這是一個可行的解決方案嗎?因爲這個原因,我不希望我的遺留代碼在某個隨機位置中斷。
這是很好... – OlivierBlanvillain