У меня возникла проблема при попытке смоделировать свойство службы из теста Junit:
@ContextConfiguration("classpath:application-config.xml")
@RunWith(SpringJUnit4ClassRunner.class)
public class FooServiceTests {
@Autowired
private FooServiceImpl fooService;
@Test
public void testFoo() {
String str = fooService.foo();
assertEquals("Var", str);
}
@Before
public void mockFooDao() throws Exception {
FooDao mockFooDao = Mockito.mock(FooDao.class);
Mockito.when(mockFooDao.foo()).thenReturn("Var");
ReflectionTestUtils.setField(fooService, "fooDao", mockFooDao);
}
}
Насмешка fooDao не имеет никакого эффекта, так как результат не является ожидаемым. Вот код службы и дао:
@Service("fooService")
public class FooServiceImpl implements FooService {
@Autowired
protected FooDao fooDao;
@Override
public String foo() {
return fooDao.foo();
}
}
@Repository
public class FooDaoImpl implements FooDao {
@Override
public String foo() {
return "foo";
}
}
Как мы видим, реальный сервис предназначен для возврата «foo», но тест проверяет дао, поэтому сервис возвращает «var». Я знаю, что это связано с прокси-сервером CGLIB, но я не могу понять, как заставить его работать без использования установщика для свойства fooDao. Любая помощь будет оценена.
С уважением и заранее спасибо.