gpt4 book ai didi

scala - 如何在 Scala 中模拟包含实用程序函数的对象文件

转载 作者:行者123 更新时间:2023-12-01 09:39:50 26 4
gpt4 key购买 nike

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

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com