JUnit 테스트에서 Spring DAO에서 최대 절전 모드 템플릿을 변경하려고합니다. 방법 -이 DAO는 런타임시에 싸서 다중 포장 된 객체에서 반사
- 는 @Transactional 주석이다. 그래서 DAO는 그 스파이가 두 번째로 싸울 것입니다.
이제 DAO에는 @Transactional에서 하나, 스파이에서 하나의 래핑 개체가 있습니다. 그 래퍼 중 먼저 생성 된 래퍼를 알 수 없기 때문에 반영을 통해 DAO에서 최대 절전 모드 템플릿을 설정할 수 없습니다.
어떻게 이중 랩핑 DAO에서 템플릿을 설정할 수 있습니까?
[편집]
일부 출처 : 테스트 클래스에서
/**
* This class gets wrapped by a proxy object because of @Transactional.
*/
@Transactional
public class MyDao implements SomeDaoInterface { ... }
:
public class MyTestClass {
@Autowired
private MyDao myDao;
@Test
public void myTestMethod() throws Exception {
final MyDao daoSpy = spy(myDao); // Dao gets wrapped with second wrapper
final Field field = MyDao.class.getDeclaredField("template");
field.setAccessible(true);
field.set(daoSpy, mySpecialMockedTemplate); // ERROR: want to inject the template but
// dont know in which wrapper
}
}
안녕하세요, 샘플 코드를 추가 할 수 있습니까? – Brice