我知道如何模拟没有构造函数参数的类
例如,
myMock = mock[MockClass]
但是,如果类有构造函数参数,你会怎么做?
更具体地说,我正在尝试模拟 finatra 类:ResponseBuilder
我知道如何模拟没有构造函数参数的类
例如,
myMock = mock[MockClass]
但是,如果类有构造函数参数,你会怎么做?
更具体地说,我正在尝试模拟 finatra 类:ResponseBuilder
我在 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()
}
}
}
通常会将特征模拟为依赖项,然后在定义它们的行为后将它们注入测试类
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")
}
}
}