我正在使用Scalamock和ScalaTest,并试图模拟一个Java接口。我目前有:
private val _iface = mock [MyInterface]现在我想做的是
_iface expects `someMethod returning "foo" once但是编译器找不到expects。
我导入了org.scalatest._和org.scalamock.scalatest._。我还漏掉了什么?
发布于 2015-04-26 02:54:41
首先,在ScalaMock 3中对代理模拟的支持不是很好,我认为在ScalaMock 4中它们将被完全删除。你真的需要使用代理模拟而不是宏模拟吗?
这应该是可行的:
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获取更多示例。
发布于 2016-03-06 19:09:41
我认为应该更像这样:
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到函数
发布于 2019-02-19 19:02:22
我使用的是scalaMock版本的4.1.0,这对我很有效:
对于某些特征:
trait MyInterface { def someMethod(n1: Int, n2: Int) }这应该放在测试中
val myInterfaceMock = mock[MyInterface]
myInterfaceMock.someMethod _ expects (1,2)有关更多阅读:scalaMock Guide,您将在那里找到一些示例
https://stackoverflow.com/questions/29841267
复制相似问题