我想使用===
测试Scalaz
的运算符ScalaTest
。
我写的只是测试:
class ComparisonTest extends FunSuite {
test("=== operator of Scalaz") {
assert(1 === 1) // i want to check/test === operator of Scalaz
}
}
不幸的是,在我的测试的assert
范围内,scala从===
中选择了运算符ScalaTest
。如果我明确导入它没有帮助:
import scalaz.Scalaz._
import scalaz._
我也尝试过:
import scalaz.syntax.EqualOps
assert(new EqualOps[Int](1).===(1)) }
但它没有编译:
Error:(10, 12) constructor EqualOps in class EqualOps cannot be accessed in class ComparisonTest
assert(new EqualOps[Int](1).===(1)) }
在Scalaz
的测试中,有没有办法对===
FunSuite
运算符进行此类测试? (也许somhow禁用===
} {/ 1>的ScalaTest
答案 0 :(得分:3)
对于new EqualOps[Int](1).===(1))
错误,您可以使用implicitly[Equal[Int]].equal(1, 2)
来implicitly
获取 Scalaz Equal
实施。
对于禁用scalatest均衡器隐式转换,您可以尝试覆盖convertToEqualizer
方法和删除implicit
方法修饰符。
示例:
class ComparisonTest extends FunSuite {
override def convertToEqualizer[T](left: T): Equalizer[T] = new Equalizer(left)
import scalaz._
import Scalaz._
test("=== operator of Scalaz") {
assert(1 === 1) // i want to check/test === operator of Scalaz
}
}
这是实现这一目标的一种棘手的方法,最好的方法可能需要 scalatest 更改均衡器注入方式,例如导入,我们可以 unmport implicit
赞:import Predef.{any2stringadd}