オブジェクトを受け取ってオブジェクトを返す Spring/Hibernate の DAO メソッドをモックしようとしています。
Mockito.when(mockedDao.findByProperty(c)).thenReturn(state);
c
オブジェクトには、「名前」、「ベン」などのキーと値のペアがあります。state
オブジェクトには雇用ステータスがあります。
しかし、テストを実行すると null が返されます。criteria
単体テストで渡しているパラメータは同じですが、まったく同じではないためだと思います。この問題を回避するにはどうすればよいですか? ここでの基準は、休止状態の基準に関連しないキー値を持つオブジェクトです...
ここに「service.getELementByName」があります:
@Override
@Transactional
public State getElementByName(Object value) {
Criteria c = new Criteria();
c.property = "state_name";
c.value = (String) value;
State result = (State) stateDAO.findByProperty(c);
return result;
}
提案してください!ありがとう
編集コードは次のようになります
private State state;
@Mock
private StateDAO mockedDao;
@InjectMocks
private StateServiceImpl service;
@Before
public void init() {
// mockedDao = mock(StateDAO.class);
Criteria c = new Criteria();
c.property = "state_name";
c.value = (String) "Virginia";
state = new State();
state.setId(20);
state.setIntPtLat(37.5222512);
state.setIntPtLon(-78.6681938);
state.setStateName("Virginia");
Mockito.when(mockedDao.findByProperty(eq(c))).thenReturn(state);
// service = new StateServiceImpl<State>();
}
@Test
public void testFindByProperty() {
state = new State();
state.setId(20);
state.setIntPtLat(37.5222512);
state.setIntPtLon(-78.6681938);
state.setStateName("Virginia");
Criteria c = new Criteria();
c.property = "state_name";
c.value = (String) "Virginia";
Mockito.when(mockedDao.findByProperty(eq(c))).thenReturn(state);
service.getElementByName("Virginia");
State result = (State) service.getElementByName("Tes");
assertEquals(state, result);
}