如何在 Scala 测试中返回 Right 值的值 要么



我有一个返回Both[Exception, String]

class A {
def validate(a: Any) = {
case a: String => Left(...some.. exception)
case a: Any => Right(a)
}
}
class B(a: A) {
def callValidate(any: Any) = {
a.validate(any)
}

}

现在我为 B 类编写测试,并存根方法验证

class BTest  {
val param: Any = "22"
val a = mock[A]
(a.validate _).expects(param).returning(....someValue...) // . this value should be Right(....) of either function. 
} 

是否可以以这种方式存根以返回Either函数的 Right(.....(?

当 B 获取 a 的对象时,您可以在 BTest 类中创建 A 的新对象并覆盖该方法 validate 以在返回 Right(a( 后返回您想要的任何内容并覆盖返回 Left(a( 的 Left 部分。

class BTest  {
val param: Any = "22"
val a = new A{
override def validate(a:Any) = case _ => Right(a)
}
(a.validate _).expects(param).returning(Right("22"))
} 

或者你可以这样做。正如DarthBinks911所建议的那样。

(a.validate _).expects(param).returning(Right("a"))

这在给定的场景中可以正常工作,但是如果你做一些类似mockObject.something的事情,那么它就会给你NullPointerException。我建议您覆盖验证方法并返回您想要的内容。

相关内容

  • 没有找到相关文章

最新更新