首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scalamock:如何获取代理模拟的“期望”?

Scalamock:如何获取代理模拟的“期望”?
EN

Stack Overflow用户
提问于 2015-04-24 15:28:32
回答 3查看 2.1K关注 0票数 5

我正在使用Scalamock和ScalaTest,并试图模拟一个Java接口。我目前有:

代码语言:javascript
复制
private val _iface = mock [MyInterface]

现在我想做的是

代码语言:javascript
复制
_iface expects `someMethod returning "foo" once

但是编译器找不到expects

我导入了org.scalatest._org.scalamock.scalatest._。我还漏掉了什么?

EN

回答 3

Stack Overflow用户

发布于 2015-04-26 02:54:41

首先,在ScalaMock 3中对代理模拟的支持不是很好,我认为在ScalaMock 4中它们将被完全删除。你真的需要使用代理模拟而不是宏模拟吗?

这应该是可行的:

代码语言:javascript
复制
package example

import org.scalatest.FlatSpec
import org.scalatest.Matchers
import org.scalamock.scalatest.proxy.MockFactory

trait MyInterface {
    def someMethod : String
}

class MyTest extends FlatSpec with Matchers with MockFactory {
  "MyInterface" should "work" in {
    val m = mock[MyInterface]
    m.expects('someMethod)().returning("foo")
    m.someMethod shouldBe "foo"
  }
}

如果没有,请查看ScalaMock proxy mocks unit tests获取更多示例。

票数 1
EN

Stack Overflow用户

发布于 2016-03-06 19:09:41

我认为应该更像这样:

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

class MyTest extends FlatSpec with Matchers with MockFactory {
  "MyInterface" should "work" in {
    val m = mock[MyInterface]
    (m.someMethod _).expects().returning("foo")
    m.someMethod shouldBe "foo"
  }
}

我认为期望arg正在期望arg到函数

票数 1
EN

Stack Overflow用户

发布于 2019-02-19 19:02:22

我使用的是scalaMock版本的4.1.0,这对我很有效:

对于某些特征:

代码语言:javascript
复制
trait MyInterface { def someMethod(n1: Int, n2: Int) }

这应该放在测试中

代码语言:javascript
复制
val myInterfaceMock = mock[MyInterface]

myInterfaceMock.someMethod _ expects (1,2)

有关更多阅读:scalaMock Guide,您将在那里找到一些示例

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

https://stackoverflow.com/questions/29841267

复制
相关文章

相似问题

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