在Scala中进行单元测试的对象方法模拟或间谍

时间:2017-07-24 10:42:28

标签: scala mocking scalatest spy

有没有办法模拟或监视Scala对象中的方法?

object Object {

  def fun(value: String) = println(value)

  def main(args: Array[String]): Unit = {
    fun("executed")
    sys.exit(0)
  }
}

我想做点什么:

spy(Object.fun)

我查看了ScalaMockEasyMockJMockMockito,但无法弄明白。

1 个答案:

答案 0 :(得分:0)

更好的方法是不要使用Scala对象。它是不可测试的。

就像在java中一样,你应该避免使用Static,因为它无法与mock一起使用。

如果您想拥有该课程的一个实例,可以在public static IEnumerable<int> GenerateRandom() { var random = new Random(); while(true) { yield return random.Next(1000000,99000000); } } // Later... var newValues = MyClass.GenerateRandom() .Where(next => !currentNumbers.Contains(next)) .Distinct() .Take(amount) .ToList();

中实例化一次