首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala Spec2 Mockito:非原始参数的匹配器: any,isA

Scala Spec2 Mockito:非原始参数的匹配器: any,isA
EN

Stack Overflow用户
提问于 2013-09-26 15:17:15
回答 1查看 4.1K关注 0票数 1

我正在编写一个模拟对象,如下所示:

代码语言:javascript
复制
import org.specs2.mock._
import com...MonetaryValue
import com...Voucher
import org.mockito.internal.matchers._

/**
 * The fake voucher used as a mock object to test other components
 */
case class VoucherMock() extends Mockito {
  val voucher: Voucher = mock[Voucher]

  //stubbing
  voucher.aMethod(any(classOf[MonetaryValue])) answers {arg => //some value to be return based on arg} 

  def verify() = {
    //verify something here
  }
}

顽固性步骤抛出异常:

代码语言:javascript
复制
 ...type mismatch;
[error]  found   : Class[com...MonetaryValue](classOf[com...MonetaryValue])
[error]  required: scala.reflect.ClassTag[?]
[error]   voucher.aMethod(any(classOf[MonetaryValue])) answers {arg => //some value to be return based on arg} 

我希望从参数中获取值,并根据这个参数返回一个值,如下所示:http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#11

我和isA, anyObject...试过了

这个案子的正确论据是什么?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-26 23:30:42

您需要使用any[MonetaryValue]。下面是一个充分发挥作用的例子:

代码语言:javascript
复制
class TestSpec extends Specification with Mockito { def is = s2"""
  test ${
    val voucher: Voucher = mock[Voucher]

    // the asInstanceOf cast is ugly and 
    // I need to find ways to remove that
    voucher.aMethod(any[MonetaryValue]) answers { m => m.asInstanceOf[MonetaryValue].value + 1}
    voucher.aMethod(MonetaryValue(2)) === 3
  }
  """
}

trait Voucher {
  def aMethod(m: MonetaryValue) = m.value
}
case class MonetaryValue(value: Int = 1)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19032163

复制
相关文章

相似问题

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