在Specs2 Mockito中使用带有java.lang.UUID的eq匹配器

时间:2017-01-07 21:56:08

标签: scala mockito specs2

我们最近在其中一项服务上更改了API,它曾经是:

def updateSubtitle(subtitleId: UUID, ...): Subtitle

现在是:

there was one(subtitleService).updateSubtitle(eq(subtitleId), ...)

之前我们写过这样的期望:

subtitleId

这不再适用,因为UUID现在是String而不是eq(subtitleId)。我必须将any[UUID]更改为subtitleId但是这太过于通用,因为它实际上没有测试UUID值,它只关心类型的值eq已通过。

如何让UUID匹配器与Table 1 Col1 Col2 Col3 Table 2 Col1_prnT Col2_child Table 3 Col1_Prnt Col2_Child 一起使用?

1 个答案:

答案 0 :(得分:1)

Cause可与apply配合使用,因为eq(subtitleId)方法已正确实施(https://docs.oracle.com/javase/6/docs/api/java/util/UUID.html#equals(java.lang.Object)

您可能遇到UUIDUUID.equals之间的命名冲突问题(请参阅https://github.com/etorreborre/specs2/issues/361)。这可以通过以下任一方式解决:

  • 完全引用scala.AnyRef.eq(即org.mockito.Matchers.eq)或
  • 使用Scala导入别名更改Matchers.eq名称(例如one(subtitleService).updateSubtitle(org.mockito.Matchers.eq(subtitleId), ...)并相应地将匹配器使用更改为Matchers.eq