Как утверждать, проверять доступ полей case-класса в scala? - PullRequest
0 голосов
/ 09 апреля 2019

Я хотел знать и утверждать, был ли обращен класс дел или нет?Например, в java-объектах-значениях я могу утверждать, что получатели получают доступ к переменным-экземплярам объектов-значений или нет.В Scala я хочу добиться аналогичной вещи при доступе к полям класса дела.

case class Student(id:Int,name:String,department:String)

public def insertDataIntoTable(sc: Student = Student(1,"pspk","ap")) : Unit ={

  val id =  transform(sc.id)
  val name = transform(sc.name)
val dept = transform(sc.department)

}

В приведенном выше фрагменте кода я хотел бы добавить модульный тест для проверки того, что к полям id, name, департамента обращались 1 раз при каждом выполнении insertDataIntoTable.

С помощью mockito, как мне добиться этого в модульных тестах?

Любые входные данные очень ценятся.Спасибо

1 Ответ

2 голосов
/ 09 апреля 2019

Рассмотрите возможность использования Mockito.spy в сочетании с Mockito.verifyZeroInteractions примерно так:

class HelloSpec extends FlatSpec with Matchers {
  case class Student(id: Int, name: String, department: String)

  "Student case class" should "not have interactions" in {
    val student = Mockito.spy(Student(1, "Mario", "Starfleet Academy"))
    student.department // access case class field
    Mockito.verifyZeroInteractions(student)
  }
}

Это должно произойти с:

No interactions wanted here:
-> at example.HelloSpec.$anonfun$new$1(HelloSpec.scala:12)
But found this interaction on mock 'student':
-> at example.HelloSpec.$anonfun$new$1(HelloSpec.scala:11)

spy позволяет проверять взаимодействия с реальными объектами, такими как классы дел, тогда как verifyZeroInteractions делает то, что говорит на жестяной коробке.

...