我使用的是ScalaTest 2.0和ScalaMock 3.0.1。我如何断言一种被嘲弄的特质的方法叫做“永不”?
import org.scalatest._
import org.scalamock._
import org.scalamock.scalatest.MockFactory
class TestSpec extends FlatSpec with MockFactory with Matchers {
"..." should "do nothing if getting empty array" in {
val buyStrategy = mock[buystrategy.BuyStrategyTrait]
buyStrategy expects 'buy never
// ...
}
}发布于 2014-01-07 13:35:54
使用ScalaMock有两种样式;我将向您展示一个解决方案,显示基于Mockito的记录-然后验证风格。假设您有一个特性Foo如下:
trait Foo{
def bar(s:String):String
}然后使用该特性的实例的类:
class FooController(foo:Foo){
def doFoo(s:String, b:Boolean) = {
if (b) foo.bar(s)
}
}如果我想验证为param b提供了一个假值,那么foo.bar不会被调用,我可以这样设置:
val foo = stub[Foo]
val controller = new FooController(foo)
controller.doFoo("hello", false)
(foo.bar _).verify(*).never 使用*,我的意思是没有为任何可能的字符串输入调用bar。但是,通过使用指定的确切输入,您可以获得更具体的信息,如下所示:
(foo.bar _).verify("hello").never 发布于 2021-07-01 16:17:12
如果您使用期望值第一样式,这实际上是默认的任何方法,您没有明确地设置期望。所以你不需要做任何事。但是,一般情况下,您不能在有不同期望的测试之间重用模拟--这是不起作用的--而是必须为每个测试创建一个新的模拟。
https://stackoverflow.com/questions/20971926
复制相似问题