首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScalaMock嘲弄一个特性,给出"MockFunction1不能转换为StubFunction1“

ScalaMock嘲弄一个特性,给出"MockFunction1不能转换为StubFunction1“
EN

Stack Overflow用户
提问于 2014-11-14 22:32:10
回答 1查看 6.9K关注 0票数 5

以下代码:

代码语言:javascript
复制
import org.scalamock.scalatest.MockFactory
import org.scalatest.FlatSpec

trait SomeTrait {
  def getLongByInt(int: Int): Long
}

class TestScalaMock extends FlatSpec with MockFactory {
  "Scala Mock" should "mock my trait" in {
    val someTrait = mock[SomeTrait]
    (someTrait.getLongByInt _) when (1) returns 2L
    assert(2L == someTrait.getLongByInt(1))
  }
}

给出一个运行时错误org.scalamock.MockFunction1 cannot be cast to org.scalamock.StubFunction1。我的项目依赖关系是:

代码语言:javascript
复制
scalaVersion := "2.11.0"

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-actor" % "2.3.7",
  "com.typesafe.akka" %% "akka-testkit" % "2.3.7",
  "org.scalatest" % "scalatest_2.11" % "2.2.1" % "test",
  "org.scalamock" %% "scalamock-scalatest-support" % "3.2" % "test"
  )

有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-15 01:02:46

ScalaMock支持两种不同的styes-期望值第一和记录然后验证(莫基托风格)。

对于期望--首先,使用mock创建假对象,使用expects设置期望。

对于记录然后验证,使用stub创建假对象,使用when设置返回值,使用verify验证调用。

在您的代码中,您使用的是mock (期望值优先)和when (记录-然后-验证)。改用expects,您应该会没事的。

(注意,您可以在单个测试中混合不同的样式,但不能针对单个假对象)。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26939963

复制
相关文章

相似问题

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