我是测试框架的新手,对测试知之甚少,但我想为这里的场景编写一个单元测试用例。

到目前为止,我知道应该在其基础上构建一个特征,并让该实用程序扩展该特征,但在那之后我发现继续操作并不困难。

object utility{
    def abc(a: String, b: Int ): String={}
    def bcd(): Int = {}
}

我正在使用 flatspec 和 MockFactory
scala 2.11sbt 具有以下依赖项
libraryDependencies += "org.scalamock" %% "scalamock" % "4.1.0" % "test",
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.4" % "test"

您的帮助将不胜感激
谢谢

最佳答案

通常你会做某事。像这样:

trait Utility {
  def abc(a: String, b: Int ): String
  def bcd(): Int
}

object RealUtil extends Utility {
  def abc(a: String, b: Int ): String= ??? //real implementation
  def bcd(): Int = ???
}

class UsesUtil(util: Utility) {
   def doSth(): Int = util.bcd()
}

// allows prod usage like this UsesUtil().doSth
object UsesUtil {
  def apply(util: Utility = RealUtil): UsesUtil = new UsesUtil(util)
}

class HereAreTests {
  // use in tests
  val mockedUtility = new Utility {
    def abc(a: String, b: Int ): String= "mock"
    def bcd(): Int = 42
  }

  // test here
  val useUtilClass = new UsesUtil(mockedUtility)
  val resultFromMock = useUtilClass.doSth()
  assert(resultFromMock == 42)
}

关于scala - 如何在 Scala 中模拟包含实用程序函数的对象文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50038531/

10-11 20:35