gpt4 book ai didi

scala - 你如何使用 scalamock 来模拟带有构造函数参数的类

转载 作者:行者123 更新时间:2023-12-05 04:09:23 24 4
gpt4 key购买 nike

我知道如何模拟一个没有构造函数参数的类

例如,myMock = mock[MockClass]

但是,如果类有构造函数参数怎么办?

更具体地说,我正在尝试模拟 finatra 类:ResponseBuilder

https://github.com/ImLiar/finatra/blob/master/src/main/scala/com/twitter/finatra/ResponseBuilder.scala

最佳答案

我在 github 上找不到测试类,但是这个问题的答案取决于你想要实现的目标。你不会使用 specs2 模拟一个类和 mockito您可以监视它以确定是否发生了某些事情,这是您可能想要实现的目标的示例。

class Responsebuilder(param1: Int, param2: int) {
def doSomething() { doSomethingElse() }
def doSomethingElse() { ...
}

class ResponseBuilderSpec extends Specification with Mockito {
"response builder" should {
"respond" in {
val testClass = spy(new ResponseBuilder(1, 3))
testClass.doSomething()

there was one(testClass).doSomethingElse()
}
}
}

人们通常会将特征模拟为依赖项,然后在定义它们的行为后将它们注入(inject)到测试类中

trait ResponseBuilderConfig { def configurationValue: String }

class Responsebuilder(val config: ResponseBuilderConfig, param2: int) {
def doSomething() { doSomethingElse(config.configurationValue) }
def doSomethingElse(param: String) { ...
}

class ResponseBuilderSpec extends Specification with Mockito {
"response builder" should {
"respond" in {
val mockConfig = mock[ResponseBuilderConfig]
mockConfig.configurationValue returns "Test"
val testClass = spy(new ResponseBuilder(mockConfig, 3))
testClass.doSomething()

there was one(testClass).doSomethingElse("Test")
}
}
}

关于scala - 你如何使用 scalamock 来模拟带有构造函数参数的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46085754/

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