簡體   English   中英

Scala單元測試-存根單例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM