[英]Scala unit testing - stubbing a singleton
我是Scala單元測試的新手,我找不到對單例對象中定義的函數進行存根的方法。
例如:
class Profile {
def getLatest
...
Feed.getLatestEntries
...
}
object Feed {
def getLatestEntries: Future[List[FeedEntry]] { /* Access some API*/ }
}
我正在嘗試對Profile類中定義的getLatest
函數進行單元測試。 由於我實際上不想在單元測試中通過Web訪問外部API,因此嘗試對Feed
對象及其getLatestEntries
函數進行存根以返回一些預定義的值。
我已經研究了ScalaMock,EasyMock和Mockito框架,但是找不到找到單例對象方法的方法。 ScalaMock狀態
為什么所有的模擬框架都不提供此功能? 我怎樣才能做到這一點? 存根Feed.getLatestEntries
嗎?
謝謝
我的方法是將單例邏輯創建為特征,然后讓對象擴展特征。 這使我可以將Singleton作為默認值或隱式參數提供,但提供測試用的存根實現
trait FeedLogic {
def getLatestEntries: Future[List[FeedEntry]] { /* Access some API*/ }
}
object Feed extends FeedLogic
def somethingWantingFeed(...)(feed: FeeLogic = Feed) = { ??? }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.