У меня есть класс обслуживания -:
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 и структурами графов.