Разница в классе дел с именами полей при сбое сопоставления - PullRequest
1 голос
/ 02 февраля 2020

munit"из коробки" показывает отличные различия при сбое утверждения для классов дел, которые включают имена полей, например,

class CaseClassPrettyDiffSpec extends munit.FunSuite {
  case class User(name: String, age: Int)

  test("User should be Picard") {
    val expected = User("Picard", 67)
    val actual = User("Worf", 30)
    assertEquals(actual, expected)
  }
}

отпечатки

enter image description here

Возможны ли такие красивые различия в ScalaTest?

1 Ответ

1 голос
/ 02 февраля 2020

ScalaTest 3.1.0 предоставляет улучшенный префиксатор"из коробки", например,

import com.softwaremill.diffx.scalatest.DiffMatcher
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class CaseClassPrettyDiffSpec extends AnyFlatSpec with Matchers {
  case class User(name: String, age: Int)

  "User" should "be Picard" in {
    val expected = User("Picard", 67)
    val actual = User("Worf", 30)
    actual should be (expected)
  }
}

печатает Analysis раздел, который включает имена полей, но без подсветки и форматирования

enter image description here

Чтобы получить более качественное выделение и форматирование, мы можем попробовать diffx-scalatest , например,

class CaseClassPrettyDiffSpec extends AnyFlatSpec with Matchers with DiffMatcher {
  case class User(name: String, age: Int)

  "User" should "be Picard" in {
    val expected = User("Picard", 67)
    val actual = User("Worf", 30)
    actual should matchTo(expected)
  }
}

отпечатков

enter image description here

...