首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用scalamock部分模拟类

使用scalamock部分模拟类
EN

Stack Overflow用户
提问于 2019-04-19 18:49:18
回答 1查看 434关注 0票数 4

我正在尝试测试一个具有两个函数的Cls类:ABA加载一个DataFrameB调用A,然后执行一些操作并返回一个新的DataFrame。举个例子:

代码语言:javascript
复制
class Cls {
    def A(dummy: Int): Int = 5
    def B(): Int = A(7) + 1
}

Scalamock怎么写我的测试代码?

我试过了:

代码语言:javascript
复制
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用mock替换了所有现有函数,但这不是预期的行为)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-19 19:03:00

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

代码语言:javascript
复制
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
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55760671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档