如何执行三等于否定

时间:2013-03-31 18:25:56

标签: scala testing assert triple-equals

我正在学习scala,并希望用===编写测试。但是,我很好奇是否有办法做这样的事情:

assert(1 !=== 2)

我已尝试过上述内容!==!(===)

有没有办法获得===的描述性并使用否定?

1 个答案:

答案 0 :(得分: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)

请注意,这是===的简化版本,它不进行深层数组比较,也不会像ScalaTest那样生成很好的差异。