我是Scala中单元测试的新手,我无法找到一种方法来存储单个对象中定义的函数。
例如:
class Profile {
def getLatest
...
Feed.getLatestEntries
...
}
object Feed {
def getLatestEntries: Future[List[FeedEntry]] { /* Access some API*/ }
}
我试图对Profile类中定义的getLatest
函数进行单元测试。
由于我不希望在我的单元测试中通过网络实际访问外部API,因此我尝试存根Feed
对象及其getLatestEntries
函数以返回一些预定义值。
我已经查看了ScalaMock,EasyMock和Mockito框架,但找不到一种方法来存根单个对象的方法。 ScalaMock陈述
为什么所有模拟框架都不提供此功能?我怎样才能做到这一点?存根Feed.getLatestEntries
?
谢谢
答案 0 :(得分:3)
我的方法是创建单身人士的逻辑作为特征,然后让对象扩展特征。这允许我将Singleton作为默认或隐式参数提供,但为测试提供了一个存根实现
trait FeedLogic {
def getLatestEntries: Future[List[FeedEntry]] { /* Access some API*/ }
}
object Feed extends FeedLogic
def somethingWantingFeed(...)(feed: FeeLogic = Feed) = { ??? }