【问题标题】:Unit test for Scala object (not class)Scala 对象的单元测试(不是类)
【发布时间】:2016-02-26 06:32:10
【问题描述】:

我在 Scala 中有一个单例类,它被声明为“对象”。我需要在这个对象中编写“模拟”方法的单元测试。我该怎么做?我尝试使用“PowerMockRunner”等,但没有成功。

例如:

object MyClass extends Serializable {
   def apply(): Unit = { ..... }
   def more methods....
}

现在我需要编写一个模拟“应用”方法的单元测试。我该怎么做?

【问题讨论】:

  • 请查看youtube.com/watch?v=ZasXwtTRkio。注意 - 虽然我在前 2-3 次看到这个视频时并没有看懂,但我从中学到了简单地将参数传递给函数(以实现 DI)的价值。您不需要使用一些 mockito 技巧来模拟此方法。

标签: scala unit-testing mockito powermock powermockito


【解决方案1】:

简短的回答 - 你不应该对单例进行单元测试。

长在这里 - Unit testing with singletons

您可以将功能提取到特征并对该特征进行单元测试。

不知道为什么需要extends Serializable,但只是为了说明我的意思

  object MyClass extends Serializable with TheFunctionality {
  // whatever you need here
  }

  trait TheFunctionality {
    def apply(): Unit = ???
  }

【讨论】:

  • 它们也可以具有相同的名称。 trait Foo; object Foo extends Foo
猜你喜欢
  • 2015-12-26
  • 2010-10-18
  • 1970-01-01
  • 2011-09-22
  • 2018-01-15
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多