Scala 和 ScalaTest 运算符 === 冲突
Scala & ScalaTest operator === conflict
我想使用 ScalaTest
测试 Scalaz
的运算符 ===
。
我写了简单的测试:
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)) }
有没有办法在 FunSuite
的测试中对 Scalaz
===
运算符进行此类测试? (也许以某种方式禁用 ScalaTest
的 ===
)
对于new EqualOps[Int](1).===(1))
错误,可以使用implicitly[Equal[Int]].equal(1, 2)
来implicitly
得到ScalazEqual
实现。
对于禁用scalatest Equalizer隐式转换,你可以尝试覆盖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 更改 Equalizer 注入方式,例如通过导入,我们可以 unimport implicit
如:import Predef.{any2stringadd}
我想使用 ScalaTest
测试 Scalaz
的运算符 ===
。
我写了简单的测试:
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)) }
有没有办法在 FunSuite
的测试中对 Scalaz
===
运算符进行此类测试? (也许以某种方式禁用 ScalaTest
的 ===
)
对于new EqualOps[Int](1).===(1))
错误,可以使用implicitly[Equal[Int]].equal(1, 2)
来implicitly
得到ScalazEqual
实现。
对于禁用scalatest Equalizer隐式转换,你可以尝试覆盖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 更改 Equalizer 注入方式,例如通过导入,我们可以 unimport implicit
如:import Predef.{any2stringadd}