【发布时间】:2020-04-13 20:42:55
【问题描述】:
我对 Scala 测试比较陌生,因此我咨询了 documentation 以了解如何测试 Either 值。
我试图复制这样的说明:
import org.scalatest.EitherValues
import org.scalatest.flatspec.AnyFlatSpec
class EitherTest extends AnyFlatSpec with EitherValues {
val either: Either[Exception, Int] = Right(42)
either.right.value should be > 1
}
这个实现不能解决问题,我得到一个语法错误。我做错了什么?
错误:
错误:(9, 22) 值不应该是 Int 的成员。right.value 应该 > 1 错误:(9, 29) not found: value be either.right.value 应该 > 1 – Hannes 14 小时前
【问题讨论】:
-
你得到的错误是什么?你能补充一下吗
-
Error:(9, 22) value should is not a member of Int either.right.value should be > 1 Error:(9, 29) not found: value be either.right.value should be > 1 -
您可以尝试从 Either 中删除显式类型签名,看看是否可行?
val either = Right(42) -
@Hannes:我认为你错过了
Matchers的混音(例如class EitherTest extends AnyFlatSpec with EitherValues with Matchers)。 -
@Marth mix-in
org.scalatest.matchers.should.Matchers摆脱了语法错误,但我的 IDE 仍然声明Either.right自 Scala 2.13.0 以来已弃用,这是预期的吗?