Как выполнить тройное равенство как отрицание
Я изучаю 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.