今天,我和我的同事正在努力解决在单元测试之一中存在依赖关系的方法。
正在测试的服务类看起来像这样:
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)
另外,没有帮助。如何为这些方法创建可靠的存根?
谢谢,