Как проверить приложение Scala на основе графа DSE? - PullRequest
0 голосов
/ 17 марта 2020

У меня есть класс обслуживания -:

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

и определение в этом классе -:

def updateBt(id: String, updateBTReq: UpdateBTRequest) = {

    implicit val g = db.g
    val btVertex = g 
      .V(
        vertexIdGenerator.vertexId(VertexLabels.BT, id, PropertyLabels.BT_ID))
      .headOption()  match {
      case Some(value) => value
      case None        => throw BtDoesNotExistException(s" Does not exists")

    }
    println("BT Vertex"+btVertex)
    val btProperty = btVertex.toCC[BTModel]

    g.V(btVertex)
      .property(
        KeyValue(BTModel.PROFILE_PIC,
                 updateBTReq.profilePic.getOrElse(btProperty.profilePic)))
      .property(
        KeyValue(BTModel.FIRST_NAME,
                 updateBTReq.firstName.getOrElse(btProperty.firstName)))
      .property(KeyValue(BTModel.LAST_NAME,
                         updateBTReq.lastName.getOrElse(btProperty.lastName)))
      .iterate()

  }

Я издеваюсь над GrDbConnection и создаю свой собственный график TinkerPop, устанавливаю вершину со свойством и вернуть их при выполнении теста, чтобы я мог проверить функциональность приведенного выше кода. Пример моего тестового класса -:

class BtServiceTest extends FunSuite with MockitoSugar{

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

      val btService: BtService = new BtService(db, businessService, vertexIdGenerator)

      val gr = TinkerGraph.open().asScala()      
      val BT_ID = Key[String](PropertyLabels.BT_ID)
      val g = gr.traversal
      g.addV(VertexLabels.BT)
      .property(KeyValue(BT_ID,msg.toString()))
        .iterate()


      // mocking functions and calling the test def updateBT()
      Mockito.when(db.g).thenReturn(gr)
      Mockito.when(vertexIdGenerator.vertexId(VertexLabels.BT, id.toString(), PropertyLabels.BT_ID)).thenReturn(f)

    val result= btService.updateBt(msg.toString(), updateBTRequest)

Я сталкиваюсь с проблемами, так как каждый раз, когда мой тест возвращает исключение - BT не существует. когда я печатаю значения в консоли, я могу видеть график с 1 вершиной и 0 ребрами, но исключение все равно происходит. Я неправильно настраиваю график? Или это правильный способ тестирования класса обслуживания. Я в замешательстве, поскольку существуют кластеры dse, которые затем подключаются к нашему коду через GrDbConnection. scala, а затем он сопоставляется с ScalaGraph, поэтому, если я просто создаю свой собственный граф и задаю конкретные значения, этого должно быть достаточно для тестирования правильно? Любые предложения приветствуются, я очень плохо знаком с тестированием, scala и структурами графов.

...