2016-12-11 4 views
0

アプローチは2.3にアップデートした後には動作しません。mockito 1どのようにmockito 2のvarargsに一致しますか?

private class ArgumentsMatcher implements ArgumentMatcher<Object[]> { 
    private final Object[] expected; 

    private ArgumentsMatcher(Object[] expected) { 
     this.expected = expected; 
    } 

    @Override 
    public boolean matches(Object[] argument) { 
     return Arrays.equals(expected, argument); 
    } 
} 
+1

[適切Mockitoで可変引数と一致する方法]の可能性のある重複(http://stackoverflow.com/questions/2631596/how –

+0

Mokito 2では動作が異なりませんが、正解を見つけることは難しいです:) このページはany()の使用を提案していますが、私はそうではありませんそれが正しい答えかどうか確かめてください:https://asolntsev.github.io/en/2016/10/11/mockito-2.1/ –

答えて

0

これはもはやあなたのコードの代わりになりMockito 2でサポートされているように見えません:

// imagine this was expected 
String[] expected = {"A", "B", "C"}; 

// and this was the method 
void call(String ... varArgs); 

// here's how you'd verify it 
verify(someFunction).call(eq("A"), eq("B"), eq("C")); 

// or 
verify(someFunction).call(any()); 
+0

それは悲しいでしょう。私が注文に頼りたくない場合はどうなりますか?そして、VarargMatcherはまだインターフェイスですが、私はそれを動作させるように見えることができません - そうかもしれない:( – icyerasor

0

VarargMatcherインタフェースはもはや必要ないように見えます。私はScalaプロジェクトでMockitoを使用しています。通常のカスタムマッチャーのようなカスタムvarargsマッチャーを作成できますが、その引数をシーケンスとして扱うだけです(Javaでの動作はわかりません。またはList)。

チェックマッチャー可変引数は、特定の要素がこのように動作します含まれている場合:

import org.mockito.ArgumentMatcher 

case class IsVarargsContaining[T](expected: T) extends ArgumentMatcher[T] { 

    override def matches(arg: T): Boolean = 
    arg.isInstanceOf[Seq[T]] && arg.asInstanceOf[Seq[T]].contains(expected) 

    override def toString() = s"<vararg list containing element $expected>" 

} 
関連する問題