У меня есть несколько сложная процедура, которую я пытаюсь проверить. getDatesMi вызывает вызов метода в том же классе. Этот метод вызывает вызов методу интерфейса, который возвращает результат запроса, который передается типу MarketLimits.Как создавать классы, которые создаются в тестовом классе с помощью EasyMock?
Я использую EasyMock и junit.
Мои вопросы:
- , как я могу проверить getSqlMapClientTemplate() queryForObject.?
- как я дразнить, что результат getSqlMapClientTemplate(). QueryForObject отливают MarketLimits
Я новичок в Java и EasyMock поэтому, возможно, ответ obviuos но любая помощь приветствуется.
В настоящее время я получаю NullPointerException на subDates.greaterThenOne()
интерфейс для MyServiceDao
import com.foo.bar.domain.MarketLimits;
public interface MyServiceDao {
public MarketLimits getDates(long orgId) throws DataAccessException;
}
класс, который реализует MyServiceDao
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.foo.bar.domain.MarketLimits;
public class myServiceImpl implements MyServiceDao{
@Override
public MarketLimits getDates(long orgId) throws DataAccessException {
return (MarketLimits) getSqlMapClientTemplate().queryForObject("retrieveLimits", orgId);
}
}
основной класс тестируемой
import com.foo.bar.dao.MyServiceDao;
public class myServiceImpl extends reports implements myService {
@Autowired
private MyServiceDao myServiceDao;
public String getDatesMi() throws Exception {
MarketLimits subDates = getDates(23);
System.out.print(subDates); // this prints out null
if(subDates.greaterThenOne()){
// do some things
}
return "result"
}
@Override
public MarketLimits getDates(long orgId) {
return myServiceDao.getDates(orgId);
}
public setMyServiceDao(MyServiceDao myServiceDao){
this.myServiceDao = myServiceDao
}
}
MyTest
@RunWith(EasyMockRunner.class)
public class myServiceImplTest {
@org.easymock.Mock
private MyServiceDao myServiceDao;
@TestSubject
private MyServiceImpl myServiceImpl = new MyServiceImpl();
@Test
public void testGetDatesMi() throws Exception {
MarketLimits limits = new MarketLimits();
limits.greaterThenOne(true);
expect(myServiceDao.getDates()).andReturn(limits);
replay(myServiceDao);
myServiceImpl.getDatesMi(12);
}
}
ОБНОВЛЕНИЕ 1
по какой-то причине EasyMock экземпляр myServiceDao создавалась, однако, когда метод был призвал Ea Экземпляр syMock возвращает NULL. Моим решением было создать метод setter на myServiceImpl, чтобы установить мой myServiceDao mock. Это было предложение Deendayal Garg
UPDATE 2
Оказывается, мне не нужно иметь сеттер =) Я изменил название, чтобы отразить реальную проблему я обращенную.
Я обновил вопрос, где происходит ошибка null – mattwilsn