gpt4 book ai didi

scala - 用 scalamock 部分模拟一个类

转载 作者:行者123 更新时间:2023-12-01 01:41:48 24 4
gpt4 key购买 nike

我正在尝试测试类(class) Cls有两个功能:AB . A加载 DataFrameB电话A然后做一些操作并返回一个新的 DataFrame .举个例子:

class Cls {
def A(dummy: Int): Int = 5
def B(): Int = A(7) + 1
}

Scalamock如何编写我的测试代码?

我试过:

test("test case") {
val f = stub[Cls]
f.A _ when 7 returns 5
assert(f.B() == 6)
}

我希望测试成功通过,我得到 0 did not equal 6 (mytestcase.scala:24) (我确实知道 scalamock 用模拟替换了所有现有函数,但这不是预期的行为)

编辑:
我找到了这个 answer引用此 concept在 mockito 中,但我不确定 scalamock 是否支持这种 mock 以及为什么不建议这样做。

最佳答案

ScalaMock 不会覆盖/ stub final 方法。因此,您的解决方案可能是创建一个子类,其中部分方法标记为 final:

import org.scalamock.scalatest.MockFactory
import org.scalatest.FunSuite

class PartialMockingTest extends FunSuite with MockFactory {

test("test case") {

class PartFinalCls extends Cls {
override final def B(): Int = super.B()
}

val f = stub[PartFinalCls]
f.A _ when 7 returns 5
assert(f.B() == 6)
}

}

class Cls {
def A(dummy: Int): Int = 5
def B(): Int = A(7) + 1
}

关于scala - 用 scalamock 部分模拟一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55760671/

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