在以前版本的 Elastic4s 中,您可以执行类似的操作
val argument1: ArgumentCapture[DeleteIndexDefinition] = ???
verify(client).execute(argument1.capture())
assert(argument1 == ???)
val argument2: ArgumentCapture[IndexDefinition] = ???
verify(client, times(2)).execute(argument2.capture())
assert(argument2 == ???)
在您的测试中执行了几次之后(即一次DeleteIndexDefinition
,随后是两次IndexDefinition
)。每个验证都将与其类型匹配。
但是,Elastic4s 现在在其client.execute
方法中采用了一个隐式参数。参数是 type Executable[T,R]
,这意味着您现在需要类似
val argument1: ArgumentCapture[DeleteIndexDefinition] = ???
verify(client).execute(argument1.capture())(any[Executable[DeleteIndexDefinition,R]])
assert(argument1 == ???)
val argument2: ArgumentCapture[IndexDefinition] = ???
verify(client, times(2)).execute(argument2.capture())(any[Executable[IndexDefinition,R]])
assert(argument2 == ???)
这样做之后,我遇到了一个错误。Mockitoclient.execute
在第一次验证中考虑了这三个。是的,即使第一个参数是不同的类型。
那是因为隐式(第二个参数)在类型擦除之后具有相同的类型Executable
。
所以断言失败了。如何在此设置中进行测试?