首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >期望在Scalamock中有一个特定的mock实例

期望在Scalamock中有一个特定的mock实例
EN

Stack Overflow用户
提问于 2016-10-25 18:05:18
回答 1查看 337关注 0票数 0

为什么我不能告诉mock它应该期望一个类的实例,而不显式地给出类型呢?我的意思是:

代码语言:javascript
复制
val myClass = new MyClass(...)
val traitMock = mock[MyTrait]
(traitMock.mymethod _).expects(myClass).returning(12.3)

不起作用,而

代码语言:javascript
复制
val myClass: MyClass = new MyClass(...)
val traitMock = mock[MyTrait]
(traitMock.mymethod _).expects(myClass).returning(12.3)

确实行得通。为什么类型不能被推断?

我在build.sbt中的测试部分是

代码语言:javascript
复制
libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.0.0" % "test"
    exclude("org.scala-lang", "scala-reflect")
    exclude("org.scala-lang.modules", "scala-xml")
)

libraryDependencies += "org.scalamock" %% "scalamock-scalatest-support" % "3.3.0" % "test"

因为我被要求提供MyClass (这里是SpacePoint ):

代码语言:javascript
复制
trait SpacePoint {
  val location: SpaceLocation
}
val sp = new SpacePoint {
  override val location: SpaceLocation = new SpaceLocation(DenseVector(1.0, 1.0))
}
EN

回答 1

Stack Overflow用户

发布于 2016-10-25 21:58:36

所以实际上它对我来说是有效的,,,it,。让我在代码中提到类型推断:

代码语言:javascript
复制
val myClass = new MyClass(...)

ScalaMock没有任何关系,但由scala本身保证。下面我将使用库版本和类的源代码来指定工作示例。

测试库:

代码语言:javascript
复制
"org.scalatest" %% "scalatest" % "2.2.4" % "test",
"org.scalamock" %% "scalamock-scalatest-support" % "3.2.2" % "test"

类的源代码:

代码语言:javascript
复制
class MyClass(val something: String)

trait MyTrait {

  def mymethod(smth: MyClass): Double
}

测试源码:

代码语言:javascript
复制
import org.scalamock.scalatest.MockFactory
import org.scalatest.{Matchers, WordSpec}

class ScalamockTest extends WordSpec with MockFactory with Matchers {

  "ScalaMock" should {

    "infers type" in {
      val myClass = new MyClass("Hello")
      val traitMock = mock[MyTrait]
      (traitMock.mymethod _).expects(myClass).returning(12.3)

      traitMock.mymethod(myClass) shouldBe 12.3
    }
  }
}

希望能有所帮助。一旦您提供更多详细信息,将随时更新答案。

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

https://stackoverflow.com/questions/40237049

复制
相关文章

相似问题

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