首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何断言模拟的方法从未使用ScalaTest和ScalaMock调用?

如何断言模拟的方法从未使用ScalaTest和ScalaMock调用?
EN

Stack Overflow用户
提问于 2014-01-07 12:41:59
回答 2查看 7.6K关注 0票数 7

我使用的是ScalaTest 2.0和ScalaMock 3.0.1。我如何断言一种被嘲弄的特质的方法叫做“永不”?

代码语言:javascript
复制
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
    // ...
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-07 13:35:54

使用ScalaMock有两种样式;我将向您展示一个解决方案,显示基于Mockito的记录-然后验证风格。假设您有一个特性Foo如下:

代码语言:javascript
复制
trait Foo{
  def bar(s:String):String
}

然后使用该特性的实例的类:

代码语言:javascript
复制
class FooController(foo:Foo){  
  def doFoo(s:String, b:Boolean) = {
    if (b) foo.bar(s)
  }
}

如果我想验证为param b提供了一个假值,那么foo.bar不会被调用,我可以这样设置:

代码语言:javascript
复制
val foo = stub[Foo]
val controller = new FooController(foo)
controller.doFoo("hello", false)
(foo.bar _).verify(*).never 

使用*,我的意思是没有为任何可能的字符串输入调用bar。但是,通过使用指定的确切输入,您可以获得更具体的信息,如下所示:

代码语言:javascript
复制
(foo.bar _).verify("hello").never 
票数 9
EN

Stack Overflow用户

发布于 2021-07-01 16:17:12

如果您使用期望值第一样式,这实际上是默认的任何方法,您没有明确地设置期望。所以你不需要做任何事。但是,一般情况下,您不能在有不同期望的测试之间重用模拟--这是不起作用的--而是必须为每个测试创建一个新的模拟。

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

https://stackoverflow.com/questions/20971926

复制
相关文章

相似问题

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