2013-03-31 4 views
1

Я изучаю scala и хочу написать свои тесты с помощью ===. Тем не менее, мне интересно, если есть способ сделать что-то вроде этого:Как выполнить тройное равенство как отрицание

assert(1 !=== 2) 

Я попытался выше, !== и !(===)

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

ответ

3

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

// 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.

+0

Большое спасибо за обходной путь! –