S2JUnit4 で Mock の自動織り込み
こんな感じでコミットしてみました。 > id:skimuraさん
@RunWith(Seasar2.class) public class EmployeeDaoTest { private TestContext ctx; private EmployeeDao dao; public void before() { ctx.include("app.dicon"); } @Mock(target = EmployeeDao.class, returnValue = "1") public void getCount() throws Exception { assertEquals(1, dao.getCount()); } @Mock(target = EmployeeDao.class, pointcut = "getName", returnValue = "'hoge'") public void getName() throws Exception { assertEquals("hoge", dao.getName(1)); } @Mocks( { @Mock(target = EmployeeDao.class, pointcut = "getCount", returnValue = "100"), @Mock(target = EmployeeDao.class, pointcut = "getName", throwable = "new IllegalArgumentException()") }) @Test(expected = IllegalArgumentException.class) public void multiMocks() throws Exception { assertEquals(100, dao.getCount()); dao.getName(-1); } }
クラスかコンポーンネント名でコンポーネントをコンテナから取り出し、そのコンポーネントにMockInterceptorを引っ掛けます。
@Mockに指定できるものはMockInterceptorに指定できるものとだいたい同じ。
returnValueとthrowableにはOGNL式を書きます。
複数の指定が必要な場合は@Mocksで。