JMockitのMockに渡す引数のチェック

with〜 を指定すると引数を完全一致以外でチェックできるようになる

package tutorial;

import org.junit.After;
import org.junit.Assert;
import org.junit.Test;

import mockit.*;

public class HelloWorldTest3 {
	@Test
	public void testSample1() throws Exception {
		new Expectations(true)
		{
			@MockField(methods={"calc"})
			DummyStream mock;
			{
				mock.calc("a");
				returns("aa");
				mock.calc("");
				throwsException( new Exception() );
			}
		};
		Sample1 s = new Sample1();

		String ans1 = s.Test("a");
		Assert.assertEquals("aa",ans1);
		String ans2 = s.Test("");
		Assert.assertEquals("",ans2);
	}

	@After
	public void tearDown() {
	   Mockit.tearDownMocks();
	}
}

ここで、 mock.calc の呼び出しのパラメータはチェックせずになんでもOKにしたい場合

   mock.calc(withAny(""));

とすればいい。

また、特定の文字列で始まっていることをチェックするために

   mock.calc(withPrefix("a"));

などとすることも出来る。