Как выполнить тройное равенство как отрицание

Я изучаю Scala, и хочу написать свои тесты с ===, Тем не менее, мне любопытно, если есть способ сделать что-то вроде этого:

assert(1 !=== 2)

Я пробовал выше, !==, а также !(===)

Есть ли способ получить описательность === и использовать отрицание?

1 ответ

Решение

ScalaTest не имеет !== метод (это на самом деле в исходном коде и закомментировано). Вы можете реализовать свой собственный аналог, например:

// Somewhere in the codebase
class ExtendedEqualizer(left: Any) {
  def !==(right: Any) = {
    if (left != right) None
    else Some("%s equaled to %s".format(left, right))
  }
}

object TestUtil {
  implicit def convertToExtendedEqualizer(left: Any) = new ExtendedEqualizer(left)
}

// In your test class
import TestUtil.convertToExtendedEqualizer

Тогда это становится таким же простым в использовании, как ===:

assert(3 !== 2+2)

Обратите внимание, что это упрощенная версия === это не делает глубокие сравнения массивов и не генерирует хороший diff, как это делает ScalaTest.

Другие вопросы по тегам