jvm 使用Mockito模拟Scala类中的方法

y53ybaqx  于 2023-08-05  发布在  Scala
关注(0)|答案(1)|浏览(193)

我正在使用以下Scala类:

class names(lastName: String) {

  def getFullName(lastName: String): String = get_private_name + lastName

  def getPrivateName: String = "amit"

}

字符串
我需要测试getFullName方法,并想在该类中模拟getPrivateName函数。
在Python中,我通常会执行以下任务:

def test_getPrivateName() {
   with mock.path(names.getPrivateName) as mocked_getPrivateName {
      names_cls = names("my_last_name")
      mocked_getPrivateName.return_value = "ido"
      self.assertEqual("ido my_last_name", names_cls.getFullName())
   }
}


我试图在Scala中用Mockito复制同样的行为,但我不确定如何继续。任何指导或帮助都将不胜感激。

kx7yvsdv

kx7yvsdv1#

模仿你正在测试的类的方法,虽然是可能的(如果你仍然想使用它,请查找“Mockito spy”),但不是一个好主意,而且代码气味,正如评论中所指出的那样。
通常有更好的方法。比如,在这种情况下,只需将privateName作为构造函数中的变量集,根本不需要模拟它:

class Names(lastName: String, val privateName: String = "amit") { 
   def fullName = privateName + lastName
}

def test_stuff() = {
    val testMe = new Names("foo", "bar") 
    testMe.fullName mustBe "foobar"
}

字符串

相关问题