У меня есть DI цепь (DBCONFIG -> Repository -> Component -> RestController)Spring загрузки - DI - Модульное тестирование
DataSource в DBCONFIG является AutoWired в Repository. Репозиторий автоматически связан с компонентом ... и т. Д.
класс Application - CtnStatusCheckerApplication.class
DataSource создается подстановок JNDI ("eis.OT4.SBL_DS"). Я издеваюсь над DataSource и помещаю его в дерево JNDI Spring.
Это мое модульное тестирование (в Groovy):
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = CtnStatusCheckerApplication.class)
class SiebelRepositoryTest {
@Autowired
SiebelRepository siebelRepository
@Autowired
@Qualifier("sblDataSource")
DataSource sblDataSource
@BeforeClass
public static void setUpClass() throws Exception{
DataSource ds = mock(DataSource.class)
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder()
builder.bind("eis.OT4.SBL_DS",ds)
builder.activate()
}
@Test
public void testContext(){
assert siebelRepository != null
assert sblDataSource != null
println Whitebox.getInternalState(siebelRepository,"sblDataSource") // prints "null" why?
}
}
1 - Почему sblDataSource внутри siebelRepository нуля? 2 - В этом типе сценария @SpringApplicationConfiguration должен быть инициализирован с помощью какого класса? объект верхнего уровня или каждый отдельный фасоль? (Например, службы, компоненты, Repository и т.д.)