私はUnitFormのスコープに目的がないので、DateFormatクラスをモックしようとしています。私はorg.mockito.Mockitoライブラリを使用しています。次のコードjunitテストでDateFormatクラスをモックする
:
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.any;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.junit.Before;
public class someTest {
@Mock
DateFormat formatter;
@Before
public void before() {
MockitoAnnotations.initMocks(this);
when(formatter.format(any(Date.class))).thenReturn("2017-02-06");
}
}
は、次のエラーを与える:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 3 matchers expected, 1 recorded:
-> at someTest.before(someTest.java:33)
This exception may occur if matchers are combined with raw values: //incorrect: someMethod(anyObject(), "raw String"); When using matchers, all arguments have to be provided by matchers. For example: //correct: someMethod(anyObject(), eq("String by matcher"));
For more info see javadoc for Matchers class.
at java.text.DateFormat.format(Unknown Source)
at someTest.before(someTest.java:33)
私は正しい方法でDateFormatクラスをモックはどうすればよいですか?あなたが見ることができるように
実際のインスタンスを作成するのは簡単ではないでしょうか? 'Modeler = new SimpleDateFormat(" '2017-02-06' ");' –
@AndyTurner実際のインスタンスをMockedオブジェクトと比較した場合のメリットは何ですか? – henrik
私はその質問をあなたに回します:実際のインスタンスを使用するのではなく、このオブジェクトを嘲笑することによって、あなたは何を得ると思いますか? –