DAO をモックしてサービス層を EasyMock でテストしようとしています。私の DAO クラスのメソッドの 1 つを以下に示します。
public BrickStreamUserVO getUserDetails(String userName, String password)
{
BrickStreamUserVO usrObj = null;
try
{
String sqlStr = "SELECT * FROM USER_T WHERE USER_NAME LIKE '" + userName + "'
AND PASSWORD = '" + password + "'";
usrObj = getJdbcTemplate().queryForObject(sqlStr, new BrickStreamUserMapper());
logger.info("Getting user details....");
if(usrObj==null)
throw new UserException("Invalid Login parameters");
}
catch (Exception e)
{
logger.error(e);
throw new UserException("Invalid Login parameters");
}
return usrObj;
}
そして、ここに私のテストコードがあります
public class BrickStreamServiceImplTest
{
private BrickStreamServiceImpl serviceImpl;
@Before
public void buildService()
{
serviceImpl = new BrickStreamServiceImpl();
}
@Test
public void testGetUserDetails()
{
BrickStreamDaoImpl daoImplMock = createMock(BrickStreamDaoImpl.class);
expect(daoImplMock.getUserDetails("user", "pwd")).
andReturn(new BrickStreamUserVO());
replay(daoImplMock);
serviceImpl.setBrickStreamDao(daoImplMock);
serviceImpl.getUserDetails("user", "pwd");
verify(daoImplMock);
}
}
UserException をスローするメソッドをテストするにはどうすればよいですか。usrObj オブジェクトが null の場合、UserException がスローされることがわかります。