Начал учить скалу по книге «functional programming in scala». Имею следующее:
package chapter01
object MyModule {
def abs(n: Int): Int =
if (n < 0) -n
else n
private def formatAbs(x: Int): String = {
val msg = "The absolute value of %d is %d"
msg.format(x, abs(x))
}
def main(args: Array[String]): Unit =
println(formatAbs(-42))
}
Теперь хочу написать кое-какие тесты. И, если для функций abs и formatAbs я смог кое-что написать:
import org.scalatest._
import org.scalatest.PrivateMethodTester._
import chapter01.MyModule
class chapter01Spec extends FlatSpec with Matchers {
"Absolute value of neg integers" should "return correct values" in {
MyModule.abs(-42) should be(42)
MyModule.abs(-1234567890) should be(1234567890)
MyModule.abs(42) should be(42)
}
"formatAbs" should "return correct string" in {
val formatAbs = PrivateMethod[String]('formatAbs)
MyModule invokePrivate formatAbs(-42) should be("The absolute value of -42 is 42")
}
....
то для функции main ничего не могу придумать. Точнее родил тест на проверку типа возвращаемого значения:
....
"main" should "return Unit type" in {
val formatAbs = PrivateMethod[String]('formatAbs)
val a = MyModule.main(new Array[String](0))
val b = MyModule invokePrivate formatAbs(-42)
a should be (println(b))}}
Почитал про scalamock, но не понял, как мокать синглтон.
Словом, нужна помощь.