1

我有一个我正在尝试进行单元测试的服务类。服务等级如下——:

class BtoService @Inject()(db: GrDbConnection,
                           businessService: BusinessService,
                           vertexIdGenerator: VertexIdGenerator) {

def updateBto(id: String, updateBTOReq: UpdateBTORequest) = {
implicit val g = db.g
    val btoVertex = g
      .V(
        vertexIdGenerator.vertexId(VertexLabels.BTO, id, PropertyLabels.BTO_ID))
      .headOption() match {
      case Some(value) => value
      case None        => throw BtoDoesNotExistException(s"BTO $id Does not exists")
}

所以在测试这个类时,我创建了一个注入服务的模拟(BusinessService,GrDbConnection)-:

  val db: GrDbConnection = mock[GrDbConnection]
  val businessService: BusinessService = mock[BusinessService]
  val vertexIdGenerator: VertexIdGenerator = mock[VertexIdGenerator]

  val btoService: BtoService = new BtoService(db, businessService, vertexIdGenerator)
  val g : ScalaGraph = EmptyGraph
        .instance()
        .asScala()

    btoService.updateBto("101",updateBTORequest)
    Mockito.when(db.g).thenReturn(g)

GrDbConnection.scala 具有定义的 db.g -:

val g: ScalaGraph = EmptyGraph
    .instance()
    .asScala
    .configure(_.withRemote(connection))

这里的连接具有连接到实际数据库的必要细节。

因为我可以使用 Mockito.when().thenReturn() 返回一个空的 scala 图,所以我不想在我的测试类中使用 .configure() 选项。

我面临的真正问题是,我无法将顶点添加到测试图中,我需要将 btoModel 作为顶点添加到图中,因为在服务类中:

val btoVertex = g.V(vertex......()).headOption() - returns a GremlinScala.Aux[scala.vertex, Hnil]

我该怎么做?请通过 - nilay0016@gmail.com 与我联系以获取更多信息。

4

0 回答 0