Как передать пользовательскую информацию в Reporter в Scala Test?

Наш тестовый пример scala вызывает REST API, например. создает пользователя и проверяет, действительно ли создан userId, анализируя выходной ответ. В случае, если REST API выдает какую-либо ошибку, userId пуст, а customReport показывает событие как TestFailed с org.scalatest.exceptions.TestFailedException: "" equaled "" из-за условия утверждения (assert(userId != ""))

Есть ли способ передать ответ REST API репортеру. Пожалуйста, порекомендуйте.

class CustomReport extends Reporter {


  override def apply(event: Event): Unit = {

}

}

person Pratap D    schedule 19.11.2019    source источник


Ответы (1)


Рассмотрите возможность предоставления пользовательской информации об ошибке с помощью подсказки, например,

assert(userId != "", myCustomInformation)

or

withClue(myCustomInformation) {
  userId should not be empty
}

где customInformation может быть, скажем,

case class MyCustomInformation(name: String, id: Int)
val myCustomInformation = MyCustomInformation("picard", 42)

Вот рабочий пример

import org.scalatest._

class ClueSpec extends FlatSpec with Matchers {
  case class MyCustomInformation(name: String, id: Int)

  "Tests failures" should "annotated with clues" in {
    withClue(MyCustomInformation("picard", 42)) {
      "" should not be empty
    }
  }
}

который выводит

[info] Tests failures
[info] - should annotated with clues *** FAILED ***
[info]   MyCustomInformation(picard,42) "" was empty (HelloSpec.scala:10)

В качестве примера пользовательского репортера рассмотрим https://stackoverflow.com/a/56790804/5205022.

person Mario Galic    schedule 21.11.2019