当前位置: 首页 > 知识库问答 >
问题:

如何在Scala测试中返回正确的值

白才捷
2023-03-14

我有一个返回[异常,字符串]的方法

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和I存根方法验证编写测试

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

是否可以以这种方式存根以返回任一函数的右(......)?

共有1个答案

高森
2023-03-14

当B获取a的对象时,您可以在BTest类中创建一个A的新对象并覆盖方法验证以在返回右(a)时返回您想要的任何内容,并覆盖左部分返回左(a)。

    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的操作。然后它会给你NullPointerException。我建议您重写validate方法并返回您想要的内容。

 类似资料:
  • 问题内容: 我怎样才能返回一个 函数 副作用的词汇封闭 1 斯卡拉? 例如,我在Go中查看此代码示例: 打印1 2 3 5 8 而且我不知道如何在Scala中编写相同的内容。 1.在Apocalisp评论后更正 问题答案: 稍短一些,您不需要退货。

  • 我是Java开发人员,正在尝试解决一个简单的C++任务。在Java中,如果我想返回一个空的/空的对象,为了表示没有找到该对象,我只需要返回null。示例: 在C++中,我有以下方法 似乎如果我声明了一个像上面这样的方法,返回NULL不是一个选项,因为该方法不返回指针,而是一个类。那么我返回什么来表示没有找到人呢?

  • 在TypeScript中,< code>class关键字引入了值和类型: 有没有一种方法可以使函数返回既是类型又是值的东西? 问这个问题的另一种方法是:有没有办法在下面声明的类型,以便类型检查? 看到这个打字游戏了吗

  • 我已经阅读了很多Java8可选版本,我确实理解这个概念,但在我的代码中尝试实现它时仍然会遇到困难。 虽然我在网上搜索了一些好的例子,但我没有找到一个解释得很好的例子。 我有下一个方法: 这个简单的方法通过传递文件路径来返回文件的md5。正如您所注意到的,如果文件路径不存在(或键入错误),将抛出NoSuchFileException,该方法返回Null。 我希望使用Optional,而不是返回nul

  • 我现在正在学习Scala。我喜欢做的一件事是提前返回。我相信这对每个人来说都更容易理解,因为我们只是删除了之前的无效状态。现在,由于Scala是一种函数式语言,并且我读到了切割计算是糟糕的函数式风格,我想知道是否有一些技巧或函数式编程等同于早期返回。 这是我要写的代码,为了完全清楚,这只是一个愚蠢的例子,我不是在寻找我的特殊情况的特别黑客,但更多的是关于如何处理这些问题的一般建议。 现在,我想做的

  • 问题内容: 我在使用flask.jsonify函数从字典输入中输出格式化的json响应时遇到了一些麻烦,如此处所述。 我的代码似乎正在返回Response对象,而不是我想要的格式化json对象。 我有 其中dict是从调用函数返回的字典对象。 在我的模板中,我有: 显示如下: 我该如何返回我要寻找的json表示形式? 问题答案: 你可以像这样使用json.dumps: 然后将其格式化为模板,如下所