mercredi 23 septembre 2015

Spring boot - DI - Unit testing

I have DI chain (DbConfig -> Repository -> Component -> RestController)

DataSource in DBConfig is AutoWired in Repository. Repository is AutoWired in Component...etc.

This is my unit test:

 @RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = CtnStatusCheckerApplication)
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 - Why is sblDataSource inside siebelRepository null? 2 - In this type of scenario, @SpringApplicationConfiguration should be initialized with which class? top level object or each individual Beans? (like Service, component, Repository etc.)

Aucun commentaire:

Enregistrer un commentaire