如何在scala中模拟嵌套类

Posted

技术标签:

【中文标题】如何在scala中模拟嵌套类【英文标题】:How to mock nested classes in scala 【发布时间】:2021-11-30 23:22:22 【问题描述】:

我有一个可以简化如下的类

class my 
  val b = new subClass()
  def a () = "not mocked"

  class subClass 
    def ret () = "not mocked"
  

我需要一些方法来模拟 my.b.ret()

【问题讨论】:

你尝试了什么?什么不工作? 【参考方案1】:

这些方法会起作用吗?

class my 
  val b = new subClass()
  def a () = b.ret()

  class subClass 
    def ret () = "not mocked"
  


class your extends my 
  override val b = new nested()
  class nested extends subClass 
    override def ret() = "TA-DA"
  

运行以下

val mine = new my
mine.a()

val yours = new your
yours.a()

打印not mockedTA-DA,具体取决于您实例化的对象。

您可以使用此代码here on Scastie。

【讨论】:

我认为 OP 的意思是一个带有 mockito 的模拟,以便在之后轻松地在模拟上应用断言。 嗯,对...我没有注意到标签。谢谢!希望这对其他正在寻找手动模拟方法的读者有所帮助。

以上是关于如何在scala中模拟嵌套类的主要内容,如果未能解决你的问题,请参考以下文章

Scala--嵌套类

Scala 中的 C++ 嵌套类

快学Scala 第八课 (嵌套类)

嵌套多个依赖项时如何模拟Python类

使用 circe 在 Scala 中 JSON 将嵌套字段解码为 Map[String, String]

Scala访问修饰符