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

如何在模拟中传递scala类

甘君之
2023-03-14

我有一个scala类a,其中有一个方法dosomething

还有一个B类

  class B(name: String)
class C {
 def doSomethingElse(b: B): String { 
 /// some logic 

 ////

 }
} 


 class A(c: C) {
  def doSomething(uuid: UUID): String {
   val b = new B("hello)
   c.doSomethingElse(b)
   // some logic

 }

}
val mockC = mock[C] 
val b = new B("hello")
(mockC.doSomethingElse _).expects(b).returning("A");

共有1个答案

濮丰
2023-03-14

Thilo的评论是对的--您的两个bs将作为上面的引用进行比较,由于它们不是同一个对象,所以它们不相等。对于内容相等,您需要一个适当的equals实现。如果您将B设为case class,那么在Scala中您就可以免费获得这一信息。但是,如果您不能更改类B,那么在ScalaMock中使用谓词mather可能有助于您在测试期间比较这两个实例。在此阅读:https://scalamock.org/user-guide/matching/

 类似资料:
  • 问题内容: 我是一个完整的Java新手。我知道Java将所有参数都视为按值传递,并且还有其他几个线程可以解释这一点。 例如,在C ++中,我可以执行以下操作: 哪个将输出3。我知道在Java中,所有参数都是按值传递的,因此您无法操纵传入的参数。在Java中,有没有一种标准的方法来 模拟 按引用传递?有没有办法调用操作传入变量的函数?对于我来说,很难绕开没有办法做到这一点的想法。 问题答案: 模拟传

  • 问题内容: 我想从Java方法返回对Scala对象的引用。我怎样才能做到这一点? 我的Scala对象是这样的: …并且我希望我的Java方法像这样: 有没有办法做到这一点? 问题答案: 应该管用。 编辑:之所以可行,是因为这是Scala表示单例对象的方式。该类中有一个名为的字段,其中填充有该类的单个有效实例。但是还有一个叫做的类,它将所有方法复制为静态方法。这样一来,您就可以在大多数情况下像Jav

  • 问题内容: 我想模拟python中的按值传递行为。换句话说,我想绝对确保我编写的函数不会修改用户提供的数据。 一种可能的方法是使用深层复制: 有没有更有效或更 Python的 方法来实现此目标,对传递的对象进行尽可能少的假设(例如.clone()方法) 编辑 我知道技术上python中的所有内容都是按值传递的。我对 模拟 行为很感兴趣,即确保我不会弄乱传递给函数的数据。我猜最一般的方法是使用其自身

  • 考虑以下代码: 它打印Why?Scala变量不是数组吗? 笔记 我在堆栈溢出上发现了几个关于斯卡拉变量的问题,但所有这些问题都是关于调用Java varargs方法或将Scala列表转换为数组的。

  • 让我们考虑一个场景,我们必须运行“Create an account API”的性能测试,该API将输入作为头/路径参数“auth token”,并输入诸如用户帐户名之类的数据。因此对于上面的场景,我们有2个特性文件, 运行POST的性能测试http://baseurl/auth_param/create/input_data1。一个特性(例如:generateauth.feature)文件,它将

  • 代码示例: 第二个问题--模拟scala对象,似乎需要使用其他方法来创建这样的服务。