如何使用 ScalaMock 模拟按名称调用参数(如 getOrElse)?

2023-11-24

我希望能够模拟返回值getOrElse方法,以便它返回传递的内容orElseScalaMock 的按名称调用参数

trait ToBeMocked {
  def getOrElse(arg: Int)(orElse: => String): String
}

由于柯里化,必须使用 ScalaMock。运行这个:

class CallByNameMockSpec extends Specification with MockFactory {

  trait ToBeMocked {
    def getOrElse(arg: Int)(orElse: => String): String
  }

  "Mocking functions with call-by-name arguments" should {
    "work" in {
      val m = mock[ToBeMocked]

      (m.getOrElse (_: Int)(_: String)).expects(101, *).onCall((x, y) => y)

      m.getOrElse(101)("result") must beEqualTo("result")
    }
  }

}

抛出异常:

[error]     ClassCastException:        
test.service.CallByNameMockSpec$$anonfun$1$$anonfun$apply$1$$anonfun$apply$3$$anonfun$apply$4 cannot be cast to java.lang.String (CallByNameMockSpec.scala:16)

诀窍是使用Product的版本onCall方法,将第二个参数转换为() => String并称其为:

class CallByNameMockSpec extends Specification with MockFactory {

  trait ToBeMocked {
    def getOrElse(arg: Int)(orElse: => String): String
  }

  "Mocking functions with call-by-name arguments" should {
    "work" in {
      val m = mock[ToBeMocked]

      (m.getOrElse (_: Int)(_: String)).expects(101, *).onCall(_.productElement(1).asInstanceOf[() => String]())

      m.getOrElse(101)("result") must beEqualTo("result")
    }
  }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ScalaMock 模拟按名称调用参数(如 getOrElse)? 的相关文章

  • 如何在 Apache Spark 中通过 DStream 使用特征提取

    我有通过 DStream 从 Kafka 到达的数据 我想进行特征提取以获得一些关键词 我不想等待所有数据的到达 因为它是可能永远不会结束的连续流 所以我希望以块的形式执行提取 如果准确性会受到一点影响 对我来说并不重要 到目前为止 我整理
  • 具有两个通用参数的上下文边界

    在 Scala 中 我可以使用上下文边界 def sort T Ordered t Seq T 与以下意思相同 def sort T t Seq T implicit def Ordered T 如果我有一个带有两个泛型参数的类怎么办 IE
  • Scala 的代码覆盖率工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 更改 build.sbt 自定义任务中的版本

    我在 build sbt 中定义了一个自定义任务 val doSmth taskKey Unit smth doSmth version 1 0 SNAPSHOT 但它不会改变版本 我真正想要的是自定义 sbt 发布任务 它将始终将相同的版
  • 高效序列化案例类

    对于我正在工作的图书馆 我需要提供一个高效 便捷 typesafe序列化 scala 类的方法 理想的情况是用户可以创建一个案例类 并且只要所有成员都是可序列化的 它似乎也应该如此 我准确地知道序列化和反序列化阶段的类型 因此不需要 也不能
  • 规范化且不可变的数据模型

    Haskell如何解决 规范化不可变数据结构 问题 例如 让我们考虑一个表示前女友 男友的数据结构 data Man Man name String exes Woman data Woman Woman name String exes
  • 使用 net.liftweb.json 或 scala.util.parsing.json 解析大型 (30MB) JSON 文件会出现 OutOfMemoryException。有什么建议吗?

    我有一个包含大量测试数据的 JSON 文件 我想解析这些数据并推送我正在测试的算法 它的大小约为 30MB 包含大约 60 000 个元素的列表 我最初在 scala util parsing json 中尝试了简单的解析器 如下所示 im
  • Scala:什么是 CompactBuffer?

    我试图弄清楚 CompactBuffer 的含义 和迭代器一样吗 请解释其中的差异 根据 Spark 的文档 它是 ArrayBuffer 的替代方案 可以提供更好的性能 因为它分配的内存更少 以下是 CompactBuffer 类文档的摘
  • Scala中有类似Java Stream的“peek”操作吗?

    在Java中你可以调用peek x gt println x 在 Stream 上 它将对每个元素执行操作并返回原始流 这与 foreach 不同 foreach 是 Unit Scala 中是否有类似的东西 最好是适用于所有 Monady
  • 在 Scala 中将元素追加到列表末尾

    我无法添加 type 元素T到一个列表中List T 我尝试过myList myElement但它似乎创建了一个奇怪的对象并访问myList last始终返回放入列表中的第一个元素 我怎么解决这个问题 List 1 2 3 4 Result
  • Slick和bonecp:org.postgresql.util.PSQLException:FATAL:抱歉,太多客户端已经错误

    当我在本地开发应用程序时 我使用以下命令启动我的 play2 应用程序sbt run 我喜欢如何更改代码 然后重新加载浏览器以查看我的更改 在大约 10 次代码更改之后 我收到 postgresql 太多连接错误 见下文 我的数据库连接使用
  • 将 IndexToString 应用于 Spark 中的特征向量

    Context 我有一个数据框 其中所有分类值都已使用 StringIndexer 进行索引 val categoricalColumns df schema collect case StructField name StringType
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客
  • 如何使用scala获取elasticsearch中_delete_by_query api的状态

    我正在 scala 中向 elasticsearch 发送 HTTP post Http s http elkIp 5051 indexName delete by query postData s query terms zip id k
  • Kafka 分区键无法正常工作

    我正在努力解决如何正确使用分区键机制的问题 我的逻辑是设置分区号为3 然后创建三个分区键为 0 1 2 然后使用分区键创建三个KeyedMessage 例如 KeyedMessage 主题 0 消息 KeyedMessage 主题 1 消息
  • Scala 案例类忽略 Spark shell 中的导入

    我希望这个问题有一个明显的答案 我刚刚升级到 Spark v2 0 并且遇到了一个奇怪的问题火花外壳 Scala 2 11 版本 如果我输入以下最小的 Scala import java sql Timestamp case class C
  • IntelliJ IDEA 能否正确格式化 scala.html 文件以及如何启用它?

    IntelliJ IDEA 12 Ultimate 和 CE 格式化我的 main scala html 文件中的以下行 在 Play 应用程序中 main css gt As main css gt 是的 真的 它分解了带引号的字符串 我
  • 来自本地 XML 的模拟 SoapClient 响应

    我想用文件中的 XML 来模拟 SoapClient 的响应 我如何创建一个 stdClass 对象 就像 SoapClient 从文件返回一样 客户端已经包装了 SoapClient 因此可以轻松模拟响应 我的模拟是这样的 soapCli
  • Scala 的“神奇”函数列表

    在哪里可以找到 Scala 的 神奇 函数列表 例如apply unapply update etc 魔法函数是指编译器的某些语法糖使用的函数 例如 o update x y lt gt o x y 我用谷歌搜索了一些组合scala mag
  • 了解 Spark 中的 DAG

    问题是我有以下 DAG 我认为当需要洗牌时 火花将工作划分为不同的阶段 考虑阶段 0 和阶段 1 有些操作不需要洗牌 那么为什么 Spark 将它们分成不同的阶段呢 我认为跨分区的实际数据移动应该发生在第 2 阶段 因为这里我们需要cogr

随机推荐

  • 使用 testbook 测试 Jupyter 笔记本单元时如何修补 input()?

    我参与的一个项目使用testbook测试 Jupyter Notebook 的代码单元 Patching工作正常 除非要测试的代码要求用户输入input 我只是不知道如何正确修补它 使用的版本 Python 3 8 10 测试手册 0 4
  • Pandas DataFrame 到 Excel:索引的垂直对齐

    给定以下数据框 将 pandas 导入为 pd d pd DataFrame a a a b b b a b c d c 1 2 3 4 d d groupby a b sum d 我想以相对于索引相同的对齐方式导出它 看看最左边的列如何垂
  • 使用 cypress 命令验证下载文件(PDF/Word/Excel)的数据

    我有一种情况 我必须使用 Cypress 命令验证下载文件的数据 文件类型 pdf Word Excel 我有被调用的服务器 API 操作的 URL 作为响应 它返回 pdf 文件 我需要使用 Cypress 命令和 Typescript
  • targetNamespace 和 xmlns

    这一页w3学校给出 以下是模式声明的一种形式
  • 错误:使用无法解析的标识符“kCGBlendModeMultiply”

    我最近更新到了 Xcode 7 beta 3 我遇到了一些问题 我似乎找不到任何问题 当我运行我的应用程序时 我收到 3 个错误 使用未解析的标识符 kCGBlendModeMultiply 使用未解析的标识符 kCGLineCapRoun
  • Java 相当于 C++ std::map?

    我正在寻找一个具有 C std map 通常实现特征的 Java 类 据我所知 是一个自平衡二叉搜索树 插入 删除 搜索的 O log n 性能 每个元素由唯一的键和映射的值组成 键遵循严格的弱排序 我正在寻找开源或设计文档的实现 我可能最
  • Tomcat 7 中的表达式语言跳过标识符检查

    我收到以下错误 SEVERE Servlet service for servlet jsp threw exception javax el ELException The identifier case is not a valid J
  • Spring中的自动配置重新初始化

    在 Log4j 中 有一个功能可以将系统初始化为按时间间隔进行配置和监视 这允许 log4j 系统在属性文件更改时重新加载其属性 spring框架是否有这样的配置观察器设施 其中配置更改时会重新加载 需要重新加载的Configuration
  • Discord.js - 获取用户上次活动?

    我试图找出是否可以使用追溯方式获取用户上次活动的时间 信息discord js 说我有类似的东西 client guilds find id SERVER ID fetchMembers then members gt const role
  • 如何更改videojs控制栏元素顺序的位置

    我的网站使用 video js 播放器 我想更改控制栏元素的位置 目前 它显示播放 暂停 音量 进度条和全屏 我怎样才能更改订单 我的代码如下 var videojs videojs video player techOrder youtu
  • 如何阻止软键盘调整 Android 手机上 Chrome 浏览器窗口的大小?

    我看到这个问题被问到here here and here 但找不到明确和 或可行的答案 我在 Samsung A7 2018 上使用 Android 9 运行 Chrome 75 会发生什么 我有一个需要键盘输入的 html 表单 当在 C
  • JBoss 文件打开过多错误

    就在上周 我在访问 JBoss v 4 2 2 Web 应用程序时遇到了问题 当我转到主页时 我收到 java lang NullPointerException 错误页面 查看 JBoss 日志输出后 似乎打开了太多文件 那么我该如何关闭
  • 读取 Unicode 文件 C++

    我有一个简单的问题要问 我有一个以 FFFE 开头的 UTF 16 文本文件要读取 有哪些C 工具可以处理这种文件 我只想阅读它 过滤一些行 然后显示结果 它看起来很简单 但我只有处理普通 ascci 文件的经验 而且我很着急 我正在使用
  • 同步单例的正确使用?

    所以我正在考虑建立一个业余爱好项目 这是一种临时性的事情 只是为了温习我的编程 设计 它基本上是一个多线程网络蜘蛛 更新相同的数据结构object gt int 因此 为此使用数据库绝对是大材小用 我唯一能想到的是用于包含我的数据结构的线程
  • mysql:使用SET还是很多列?

    我正在使用 PHP 和 MySQL 我有以下记录 具有各种分层 事件类型 的事件 事件可以有多个类别和子类别 但此类类别和子类别的数量是固定的 带时间戳 设置桌子的最佳方式是什么 我是否应该有一堆列 30 左右 其中包含表示是或否的枚举 指
  • 如何递归地查找模块中的所有模块和类?

    如果你有 module A class B end end 您可以通过 A constants 找到 B 和类似的类 但是 在 Ruby 1 9 3 中 如果 B 在另一个模块中 则无法获取 B 在 Ruby 1 8 7 中您可以 modu
  • UI布局初始化错误-center-pane元素不存在

    我正在使用具有 centerLayout westLayout northLayout 的布局结构 当我运行该文件时 出现以下错误 UI 布局初始化错误 中心窗格元素不存在 中心窗格是必需的元素 我的模板是
  • Flutter 问题:滚动时列表视图重建项目

    当我滚动到列表视图的底部时 底部的项目将被重建 同样 当我滚动到顶部时 我的第一个项目会被重建 第一个项目是一张带有可选筹码的卡片 当发生这种情况时 该筹码将被取消选择 入口 动画也会重播 我怎样才能阻止这个 这是基本代码 它使用 simp
  • 如何修复NoSuchMethodError?

    我使用 Scala 2 10 0RC1 和 sbt 0 12 1 是什么原因导致此运行时错误以及如何修复此错误 在 2 9 2 上运行良好 确切的错误消息是 java lang NoSuchMethodError scala Predef
  • 如何使用 ScalaMock 模拟按名称调用参数(如 getOrElse)?

    我希望能够模拟返回值getOrElse方法 以便它返回传递的内容orElseScalaMock 的按名称调用参数 trait ToBeMocked def getOrElse arg Int orElse gt String String