没有使用Mockito(Scala)存储一些复杂的方法调用

时间:2016-07-01 06:04:55

标签: scala unit-testing mockito specs2

今天,我和我的同事正在努力解决在单元测试之一中存在依赖关系的方法。

正在测试的服务类看起来像这样:

class MongoChecklistResultRepository @Inject()(system: ActorSystem,
                                               reactiveMongoApi: ReactiveMongoApi,
                                               checklistResultVersioningService: ChecklistResultVersioningService)
...
override def count(): Future[Int] = collection(ResultsCollectionName).count()
...

private def collection(name: String): JSONCollection =
    reactiveMongoApi.db.collection[JSONCollection](name)
    }

在应该测试count方法的测试中,我们试图模拟我们从驱动程序获取的collection对象,并最终存根它的计数方法:

doReturn(Future.successful(1)).when(jsonCollection).count()

所有看起来都有效,但在执行时,collection(ResultsCollectionName).count()总是返回null(简单来说,存根不起作用。

如果我们查看count方法os泛型集合,我们会看到更复杂的签名:

def count[H](selector: Option[pack.Document] = None, limit: Int = 0, skip: Int = 0, hint: Option[H] = None)(implicit h: H => CountCommand.Hint, ec: ExecutionContext): Future[Int]

我相信,这就是为什么存根不起作用的确切原因。

我们也试过这样做:

doReturn(Future.successful(1)).when(jsonCollection).count[MockCommand](None, 0, 0, None)

另外,没有帮助。如何为这些方法创建可靠的存根?

谢谢,

0 个答案:

没有答案