Philipp Mayer
05/23/2023, 8:12 PM@SpringBootTest(classes = [TestConfig::class])
class OrderTests: OtherClass {
val orders = listOf<Order>() //this is just a representation - it's actually part of OtherClass
@Import(Application::class)
class TestConfig {
// I'd like to pass it in here
@Bean
fun orderRepository() = FakeOrderRepository(orders)
}
@Test
fun `works now`() {
println("yay")
}
}
I have a Spring test where I’m replacing a bean. However, I’d like to supply a specific parameter (orders) when creating the bean.
The problem is that orders is part of another class that is implemented by `OrderTests`: OtherClass.
I played around with it and can’t think about a way of how I could pass that into the bean. The problem is that it’s quite crucial and that there’s no way to change the way the orders are set up in OtherClass.
The easiest (from a vanilla point of view) would be to mark TestConfig as inner class, but that’s not compatible with Spring.
Do you have an idea? Thanks in advance! 👋Adam S
05/23/2023, 8:39 PMFakeOrderRepository.setOrders(orders: List<Order>) so the orders can be modified per test, instead of upon initialisation.
2. autowire the bean into the test class, so it’s available as a property
3. in a @BeforeEach function set the orders using orderRepository.setOrders(orders)
Just a suggestion - there might be a better way